以编程方式创建的QWidget的Qt StyleSheet

问题描述 投票:2回答:1

我想将样式表应用于在父QWidget的构造函数中创建的特定Qwidget。我不想在设计器中创建QWidget,但我想动态创建它。

这是我的代码

enum {one = 0,
two = 1,
three = 2};

cMainForm::cMainForm(QWidget *parent) : QWidget(parent), ui(new Ui::cMainForm) {

//...

QWidget* widgetTest[3];
widgetTest[one] = new QWidget(this);
widgetTest[one]->setGeometry(100,100,100,100);
widgetTest[one]->show();
widgetTest[one]->raise();

//...

 setStyleSheet("QWidget#widgetTest[one]{"
            "background-color: red;"
            "}"
            );

//...

}

并且不起作用。

如果我更改styleSheet:

 setStyleSheet("QWidget{"
            "background-color: red;"
            "}"
            );

StyleSheet应用于所有窗口小部件。但我不要这个。我想将styleSheet应用于该特定小部件。

如果我不使用数组,也行不通。

QWidget* widgetTest;
widgetTest = new QWidget(this);
widgetTest->setGeometry(100,100,100,100);
widgetTest->show();
widgetTest->raise();

//...

 setStyleSheet("QWidget#widgetTest{"
            "background-color: red;"
            "}"
            );

我已经搜索过docu

有人解决了吗?

c++ qt qtstylesheets
1个回答
3
投票

您正在使用的选择器(#)引用窗口小部件objectName属性,而不是变量名称(样式引擎对变量一无所知)。给小部件一个对象名称:

widgetTest->setObjectName("widgetTest");

然后设置样式表:

widgetTest->setStyleSheet("QWidget#widgetTest { background-color: red }");
© www.soinside.com 2019 - 2024. All rights reserved.