改变QGroupBox的内容背景

Change QGroupBox's content background

我想更改 QGroupBox 的背景,但是我只想更改内部背景(每个 QGroupBox 标题下方的深灰色阴影),如下所示: 我目前拥有的是

QGroupBox {
    background-color: red;
    border: 3px dashed black;
}

这样改变了整个QGroupBox的背景:

在 Qt 中有没有办法只改变 "interior box" 背景而不是整个容器?提前谢谢你。

您可以使用小部件的 "setStyleSheet" 功能来完成。

获取内部分组框对象。并使用 "setStyleSheet" 函数设置背景颜色。

伪代码:

QGroupBox *innerGBox = new QGroupBox();

innerGBox->setStyleSheet("background-color: red");

要了解有关程序化样式设置的更多信息,请参阅下文 link。

http://doc.qt.io/qt-4.8/stylesheet-examples.html

您需要多告诉 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

我猜这里涉及 2 个 QGroupBox,因为您的 post 并不清楚。或者是否有分组框和其他一些内部容器小部件?

无论哪种情况,您都应该能够使用如下样式表:

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;
}

这会给你以下结果:

您当然可以用任意小部件替换内部组框。