更改 QGroupBox 的内容背景
Posted
技术标签:
【中文标题】更改 QGroupBox 的内容背景【英文标题】:Change QGroupBox's content background 【发布时间】:2017-03-20 23:19:56 【问题描述】:我想更改 QGroupBox 的背景,但我只想更改内部背景(每个 QGroupBox 标题下方较暗的灰色阴影),如下所示: 我目前拥有的是
QGroupBox
background-color: red;
border: 3px dashed black;
它改变了整个 QGroupBox 的背景,如下所示:
Qt 有没有办法只改变“内部盒子”背景而不是整个容器?提前谢谢你。
【问题讨论】:
需要更改内组框的样式表;不是我相信的外在的。 这张图片有点误导,因为它有两个分组框,但如果你关注标题“完整性”和“子标准”,你会看到它应该在哪里着色(在标题下)和它在哪里着色(包括标题) 哦,您只需在样式表中添加margin-top: 1ex;
即可为标题留出空间。对不起;我误会了。
【参考方案1】:
我猜这里涉及到 2 个 QGroupBox,因为这在您的帖子中并不清楚。还是有一个组框和其他一些内部容器小部件?
在任何一种情况下,您都应该能够使用如下样式表:
QGroupBox
background-color: red;
margin-top:1em;
QGroupBox QGroupBox
background-color: green;
QGroupBox::title
subcontrol-origin: padding;
subcontrol-position: left top;
background: transparent;
margin-top: -2.5em;
这将为您提供以下结果:
您当然可以用任意小部件替换内部组框。
【讨论】:
【参考方案2】:您可以使用小部件的“setStyleSheet”功能来做到这一点。
获取内部组框对象。并使用“setStyleSheet”函数设置背景颜色。
伪代码:
QGroupBox *innerGBox = new QGroupBox();
innerGBox->setStyleSheet("background-color: red");
要了解更多关于以编程方式设置样式的信息,请参阅下面的链接。
http://doc.qt.io/qt-4.8/stylesheet-examples.html
【讨论】:
【参考方案3】:您需要告诉 Qt 更多关于您想要的样式的信息,特别是边距。稍微玩一下这段代码应该会给你想要的结果:
QGroupBox
background-color: red;
border: 3px dashed black;
margin-top: 1ex; /* leave space at the top for the title */
QGroupBox::title
subcontrol-origin: margin;
padding: 0 3px;
看看Stylesheet examples
【讨论】:
以上是关于更改 QGroupBox 的内容背景的主要内容,如果未能解决你的问题,请参考以下文章