【问题标题】:Change QGroupBox's content background更改 QGroupBox 的内容背景
【发布时间】:2017-03-20 23:19:56
【问题描述】:

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

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

它改变了整个 QGroupBox 的背景,如下所示:

Qt 有没有办法只改变“内部盒子”背景而不是整个容器?提前谢谢你。

【问题讨论】:

  • 需要更改内组框的样式表;不是我相信的外在的。
  • 这张图片有点误导,因为它有两个分组框,但如果你关注标题“完整性”和“子标准”,你会看到它应该在哪里着色(在标题下)和它在哪里着色(包括标题)
  • 哦,您只需在样式表中添加margin-top: 1ex; 即可为标题留出空间。对不起;我误会了。

标签: c++ qt c++11 qt5 qt5.5


【解决方案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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-13
        • 2016-11-28
        • 1970-01-01
        • 2017-08-08
        • 1970-01-01
        相关资源
        最近更新 更多