我想更改一个QGroupBox的背景,但是我只想更改内部背景(每个QGroupBox标题下面的较深的灰色阴影),如下所示:

我现在拥有的是
QGroupBox {
background-color: red;
border: 3px dashed black;
}它会像这样改变整个QGroupBox的背景:

Qt中是否有一种只更改“内部框”背景而不是整个容器的方法?提前谢谢你。
发布于 2017-03-21 10:57:33
我想这里有两个QGroupBox‘s,因为从你的帖子中还不是很清楚。或者是否有一个组框和其他内部容器小部件?
在任何一种情况下,您都应该能够使用样式表,如下所示:
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;
}这将给你以下结果:

当然,您可以将内部组框替换为任意小部件。
发布于 2017-03-21 06:38:22
您可以使用小部件的"setStyleSheet“函数来完成它。
获取内部组框对象。并使用"setStyleSheet“函数设置背景色。
伪码:
QGroupBox *innerGBox = new QGroupBox();
innerGBox->setStyleSheet("background-color: red");要了解有关设置样式编程的更多信息,请参阅下面的链接。
http://doc.qt.io/qt-4.8/stylesheet-examples.html
发布于 2017-03-21 06:39:23
你需要告诉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;
}看一看样式表示例
https://stackoverflow.com/questions/42915732
复制相似问题