c++ - Qt StyleSheet 以编程方式创建QWidget

标签 c++ qt qtstylesheets

我想将样式表应用到我在父 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;"
            "}"
            );

//...

}

而且不起作用。

如果我更改样式表:

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

样式表应用于所有小部件。但我不想要这个;我只想将样式表应用于该特定的小部件。

此外,如果我不使用数组,它就不起作用。

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

//...

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

我已经搜索过 documentation .

解决办法是什么?

最佳答案

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

widgetTest->setObjectName("widgetTest");

然后设置样式表:

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

关于c++ - Qt StyleSheet 以编程方式创建QWidget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59423594/

相关文章:

c++ - 链接器错误 : Statically Linking of Boost Serialization Library

c++ - 如何使用逗号将一个字符串分成两个字符串,并存储字符串? (C++)

c++ - C++14 会支持不受约束的泛型函数吗?

python - 在线程中更改 QObject 样式表时出错

qt - 如何在 Qt 中从 QToolBar 自定义 QToolButtons?

css - 如何使用 qss/css 设置单个 QToolButton 的样式

c++ - openCV cvSaveImage() 增加图像的大小

c++ - 停止 QNetworkRequest 缓冲整个请求

qt - QML:使用 ScrollView 会导致元素显示不正确

c++ - 如何连接 QString 和 int