更改 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 的内容背景的主要内容,如果未能解决你的问题,请参考以下文章

您可以隐藏 QGroupBox 框架但保留其内容可见吗?

Qt怎么改变QGroupBox控件的边框颜色啊?请高手指点

在QT中QGroupBox 能随着窗口变化而自动变化么?

使用样式表设置 QGroupBox 标题字体大小

Qt中去掉QGroupBox的边框

QGroupBox 找到选中的单选按钮