如何维护 Qt 组框中每个项目的默认背景颜色?

How to maintain default background color of each items inside Qt group box?

当我更改 Qt 组框的背景颜色时,组合框的背景颜色也会更改。在组框内。我想要组合框的默认颜色,所以这就是为什么我不更改组合框的背景颜色。请告诉我如何在不更改内部项目的默认 bg-color 的情况下更改 Qt 组框的背景颜色。我在qt designer(ui)中使用样式sheet更改了QT组框的背景。我是初学者,请帮助。

您应该按照以下步骤操作:

  1. 为您的对象设置特定名称

  1. select 父对象并像这样向父对象添加样式表:

  1. 这是样式表:

    QGroupBox#gBox1 { 背景色:rgb(138, 226, 52); }

首先,您应该像 QGroupBox 一样设置您想要的 class 类型,对于设置样式,您将其命名为 对象名称#.

之后
  1. 输出:

带有样式的简单项目

#include <QtCore>
#include <QtGui>
#include <QtWidgets>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QGroupBox GroupBox;
    GroupBox.setMinimumSize(QSize(400, 400));
    GroupBox.setStyleSheet("QGroupBox {background-color: green}");
    
    QComboBox Combo1, Combo2;
    Combo1.setStyleSheet("QComboBox {background-color: yellow}");
    Combo2.setStyleSheet("QComboBox {background-color: red}");

    Combo1.addItem("Test1");
    Combo1.addItem("Test2");

    Combo2.addItem("Test3");
    Combo2.addItem("Test4");

    QVBoxLayout vbox;
    vbox.addWidget(&Combo1);
    vbox.addWidget(&Combo2);

    GroupBox.setLayout(&vbox);
    GroupBox.show();

    return a.exec();
}

您还可以更改对象名称 'setObjectName(const QString &)' 函数,然后使用这些名称设置不同对象的样式

    Combo1.setObjectName("TestObject");
    Combo1.setStyleSheet("QComboBox#TestObject {background-color: yellow}");