Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何设置自定义小部件的背景色和边框宽度?

如何设置自定义小部件的背景色和边框宽度?
EN

Stack Overflow用户
提问于 2018-09-20 05:51:20
回答 2查看 6.9K关注 0票数 1

我有一个自定义小部件,它的父部件是另一个自定义小部件。我能够使用QPalette设置父自定义小部件的背景色,而且效果很好。但是,我无法同时使用QPalettestylesheet设置子定制小部件的边框颜色。

以下是我如何设置我的父自定义小部件的背景色:

代码语言:javascript
运行
AI代码解释
复制
QPalette pal = parentCustomWidget->palette();
QColor color = {226, 208, 208};
pal.setColor (QPalette::Background, color);
parentCustomWidget->setAutoFillBackground (true);
parentCustomWidget->setPalette (pal);
parentCustomWidget->show();

为了将背景颜色设置为自定义小部件,我引用了几个这样的帖子/答案,但我无法设置它。这就是我如何设置我的childCustomWidget的颜色:

Approach1:

代码语言:javascript
运行
AI代码解释
复制
QPalette pal = childCustomWidget->palette();
QColor color = {204, 231, 47};
pal.setColor (QPalette::Background, color);
childCustomWidget->setAutoFillBackground (true);
childCustomWidget->setPalette (pal);

Approach2:

代码语言:javascript
运行
AI代码解释
复制
childCustomWidget->setStyleSheet ("*{border-width:" +
    BorderThickness +
    ";border-style:solid;border-color:" +
    hexColorCode + " ;color:white;}");

注意:,我已经注释掉了paintEvent虚拟函数。

我已经通过了这个链接:如何改变QWidget的背景色,并合并了类似于给定的更改,但我无法为childCustomWidget设置颜色。

使用上述方法的自定义小部件如下所示:

这里橙色是父母的BG颜色,我可以设置。灰色似乎是子部件的默认颜色。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-20 15:19:08

解决方案

要使Approach2工作,即为了使您的自定义小部件尊重样式表,StyledBackground属性应该设置为true,因为它:

指示应使用样式背景绘制小部件。

示例

下面是我为您准备的一个很小的示例,以演示所建议的解决方案的可能实现:

代码语言:javascript
运行
AI代码解释
复制
class ParentWidget : public QWidget
{
    Q_OBJECT
public:
    explicit ParentWidget(QWidget *parent = nullptr) : QWidget(parent) {}
};

class ChildWidget : public QWidget
{
    Q_OBJECT
public:
    explicit ChildWidget(QWidget *parent = nullptr) : QWidget(parent) {}
};

class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    explicit MainWindow(QWidget *parent = 0) :
           QMainWindow(parent)
       {
           auto *pWidget = new ParentWidget(this);
           auto *l = new QVBoxLayout(pWidget);
           auto *cWidget = new ChildWidget(pWidget);
           QString BorderThickness("2");
           QString hexColorCode("#FF00FF");

           l->addWidget(cWidget);
           l->setContentsMargins(25, 25, 25, 25);

           QPalette pal(pWidget->palette());
           QColor color(226, 208, 208);
           pal.setColor (QPalette::Background, color);
           pWidget->setAutoFillBackground (true);
           pWidget->setPalette (pal);

           cWidget->setAttribute(Qt::WA_StyledBackground, true);
           cWidget->setStyleSheet("ChildWidget { border: " + BorderThickness + " solid " +
                                  hexColorCode + ";"
                                                 "background-color: rgb(204, 231, 47);"
                                                 "color: white; }");

           setCentralWidget(pWidget);
           resize (400, 400);
       }
};

结果

在编写此示例时,将产生以下结果:

票数 3
EN

Stack Overflow用户

发布于 2018-09-20 07:36:50

关于调色板的Qt文档:警告:不要将此函数与Qt样式表结合使用。当使用样式表时,小部件的调色板可以使用“颜色”、“背景色”、“选择颜色”、“选择背景色”和“备用背景色”进行定制。

http://doc.qt.io/qt-5/qwidget.html#palette-prop

关于autoFillBackground:警告的Qt文档:结合Qt样式表谨慎使用此属性。当小部件具有具有有效背景或边框图像的样式表时,此属性将自动禁用。

http://doc.qt.io/qt-5/qwidget.html#autoFillBackground-prop

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52426751

复制
相关文章
微软的这项新技术证明,深度学习还能更“深入”
计算机视觉已经是日常生活的一部分。借助这种技术,Facebook可以识别你上传到社交网络的照片上的人物;Google Photo能够自动在收藏行列中找出特定的图片,以及识别出各种各样的东西……这样的
新智元
2018/03/14
7260
微软的这项新技术证明,深度学习还能更“深入”
利用selenium webdriver下载不同类型的文件(pdf,txt等等)[通俗易懂]
很多时候你需要从网站上下载不同种类的文件,像是MS Excel file, MS Word File, Zip file, PDF file, CSV file, Text file, 等等。 如果手动下载,会弹出一个保存文件的对话框。
全栈程序员站长
2022/11/04
1.6K0
利用selenium webdriver下载不同类型的文件(pdf,txt等等)[通俗易懂]
是什么使你留在你的公司
之前离职的一个同事,是典型的技术型人才,前段时间跟他一起吃饭,得知他工作状况不是很理想(他在创业型团队,工作强度非常大,且做出来的东西得不到应有的认可,公司给他的报酬也不是很高),于是动心把他挖回来,跟两个领导打过申请,争取到了我能给他争取到的报酬后,跟同事商量,同事满口答应下来,并且很诚恳的跟我说,愿意回来;天不遂人愿,他提了离职申请后,他的现在的领导,决定给他股份(或期权),调整他的薪资,希望他能留下来;如此反复沟通了两三次,最后还是没能再回到我的团队;
芋道源码
2018/12/27
5090
什么使DevOps中的代码审查良好?[DevOps]
改善软件开发生命周期,向客户交付软件的速度以及该软件的质量都是DevOps的重要前提。这些是DevOps运动规定的工具和技术试图达到的目标。作为开发人员,感到很自由,可以快速进行更改,不仅可以更改源代码,还可以更改基础结构和配置代码。作为DevOps的从业者,目标是在质量与安全性之间实现平衡。如何?可以使用的一种工具是代码审查。
yyx
2019/12/24
9880
什么使DevOps中的代码审查良好?[DevOps]
【纯干货】用了这么多年的 SpringBoot 你知道什么是 SpringBoot 的 Web 类型推断吗?
用了这么多年的 SpringBoot 那么你知道什么是 SpringBoot 的 web 类型推断吗?
Java极客技术
2023/02/23
5560
【纯干货】用了这么多年的 SpringBoot 你知道什么是 SpringBoot 的 Web 类型推断吗?
微软的新技术使面部动作与语音片段更好同步
越来越多的研究表明,只要有足够大的语料库,几乎任何人的面部动作都可以与语音片段同步。今年6月,三星(samsung)的应用科学家详细介绍了一种端到端的模型,该模型能够在人的头颅中对眉毛、嘴、睫毛和脸颊进行动画处理。仅仅几周后,Udacity发布了一个系统,该系统可以从音频叙述中自动生成独立演讲视频。
AiTechYun
2019/10/10
5080
微软的新技术使面部动作与语音片段更好同步
用了多年盗版Windows的你,有没有觉得对不住微软?
非常有意思的一个问题,对于个人用户来讲微软的系统几乎讲正版的不是很多,小打小闹的公司基本上也不会在乎版本是不是正版的,如果按照软件全部的正版的话,小公司直接运转不下去任何公司的起步都会显得比较弱小,对于个人或者小公司微软公司也不会顾及,除非一些特殊的情况,微软在全球的推广策略是免费使用,对于大公司的版本基本上是不放过的,这就是微软公司的策略,先把产品利用普通大众给推广起来,然后利用版权从大公司弄钱。
程序员互动联盟
2019/06/20
6610
用了多年盗版Windows的你,有没有觉得对不住微软?
Java刷题常见的集合类,各种函数的使用以及常见的类型转化等等
相信大家在刷算法题的过程中,好不容易想出来大概的思路,也知道去用哪个集合类,但各个集合类的一些命令都长得太像,很容易将他们弄错,并且在各集合之间的转化也是特别烦人,还有很多实用的函数都知道可以去用,但总是会忘记。
用户11369558
2024/12/24
1260
Java刷题常见的集合类,各种函数的使用以及常见的类型转化等等
[Error] invalid use of incomplete type 使用了未定义的类型
今天在写奥特曼打大怪兽的时候,发现一个奇怪的问题,我定义了两个基类Ultraman和Monster,一个Monster的子类Boss,然后两个基类是有相互勾结的地方,它们都或多或少的使用了对方的类型进行定义自己,然后我在第一个类实现前面进行了另一个类的声明:
叶茂林
2023/07/30
6090
[Error] invalid use of incomplete type 使用了未定义的类型
7个高效的TypeScript工具类型,你会用了吗?
这些工具类型能让你的代码更清晰、更简洁,同时还能减少隐藏错误的可能性。今天我们就来聊聊TypeScript中的七个高效工具类型:keyof、ReturnType、Awaited、Record、Partial、Required 和 Omit。通过实例讲解,让你轻松掌握这些强大的工具类型。
前端达人
2024/06/26
8460
7个高效的TypeScript工具类型,你会用了吗?
使枚举类型的选项在VS的属性窗里显示为中文
我们自己做的组件,一般希望它的属性在设计时能够在属性窗里显示为中文,可以在属性上添加System.ComponentModel.DisplayNameAttribute标注达到这个目的。但是,枚举的选项如何以中文的形式显示在属性窗里呢?
明年我18
2019/09/18
1.2K0
使枚举类型的选项在VS的属性窗里显示为中文
用了天翼云,为什么FTP无法使用了?
最近因为公司举行云生态大会,节奏非常紧急,公众号断了几天,不管工作再忙,学习不能断,今天继续补上。
希望的田野
2019/09/24
2.6K0
用了天翼云,为什么FTP无法使用了?
意识理论大较量的结果究竟证明了什么
意识理论家长达五年的“对抗性合作”在观众面前展开了一场戏剧性的对决。它没有选出任何赢家,但它仍然可以声称取得了进展。
用户9861443
2023/09/02
4020
意识理论大较量的结果究竟证明了什么
apache占用了什么端口
今天想做PHP程序,结果启动Apache的时候控制台报443端口被占用。原因是我的虚拟机VMware占用443端口用于连接远程服务器的。其实出现这些状况很正常。因为不同的程序很有可能同时需要一个端口维持其服务。这里写给入门者告诉大家解决方法。
用户1448800
2021/08/16
9830
apache占用了什么端口
是什么使代码 “Swifty”? —— Safe
尽管编程语言是由其语法正式定义的,但实际上在实践中使用它们的方式还是可以由它们当前的约定来确定的。毕竟,就语法而言,大多数受“ C影响 ” 的语言看起来都非常相似,以至于您可以用几乎使它看起来像JavaScript,C#或C本身的方式编写Swift。
韦弦zhy
2020/03/20
8870
是什么使代码 “Swifty”? —— Safe
五种类型的渗透测试使潜在漏洞为零
一个渗透测试或笔测试是软件或硬件系统,寻求有意计划的攻击,以揭露可能违反系统的完整性,并最终损害用户的机密数据固有的安全漏洞。在这篇文章中,我们将讨论不同类型的渗透测试,以便您了解要覆盖的内容、估算工作量、高效执行。
鲸落c
2022/11/14
4640
是什么使代码 “Swifty”? —— Expressive
Swift的官方网站上的About页面列出了三个关键字: 安全(Safe):为了最大限度地减少开发人员的错误; 迅速(Fast):执行的速度要快; 表现力(Expressive):因为Swift
韦弦zhy
2020/03/20
6570
是什么使代码 “Swifty”? —— Expressive
科普帖:什么是组播?组播和单播的区别是什么?
作为IP传输三种方式之一,组播指的是报文从一个源发出,被转发到一组特定的接收者,相同的报文在每条链路上最多有一份。相较于传统的单播和广播,组播可以有效地节约网络带宽、降低网络负载,所以被广泛应用于IPTV、实时数据传送和多媒体会议等网络业务中。
IT运维技术圈
2022/06/27
19.7K0
科普帖:什么是组播?组播和单播的区别是什么?
是什么使代码 “Swifty”? —— Fast
Swift的官方网站上的About页面列出了三个关键字: 安全(Safe):为了最大限度地减少开发人员的错误; 迅速(Fast):执行的速度要快; 表现力(Expressive):因为Swift
韦弦zhy
2020/03/20
7680
是什么使代码 “Swifty”? —— Fast
大名鼎鼎的Requests库用了什么编码风格?
此外,PEP-8 推荐的用于连续行的编码风格毫无一点品味,绝不允许在 Requests 代码库用:
Python猫
2019/04/09
3630

相似问题

如何证明一组密码是一组明文的加密?

10

基于模拟的证明和基于游戏的证明有什么区别?

30

什么是安全西格玛证明的例子?

10

证明Dlog在泛型组模型中是困难的

10

什么时候人们更喜欢知识的证明而不是零知识的证明?

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档