小部件的ObjectName更新后不会自动更新样式

10
在我的应用程序中,整个应用程序的样式表都是从加载到应用程序中的资源文件中获取的。 我在那里定义了两个QListWidget的样式表:
QListWidget#Good{
..some color properties
}

QListWidget#Bad {
..soem different color properties
}
在一个表单中,我的QListWidget的对象名称为“Good”,因此它遵循#good样式。在运行时,我有一个情况,我想将其“SetObjectName”更改为“Bad”,并立即在UI中更改样式。
我注意到两件事: 1.仅调用“SetObjectName(“ Bad”);”不会从方法中更改样式...... 2.只有在从包含QListWidget的小部件的构造函数中调用“SetObjectName(“ Bad”);”才起作用。
显然,我漏掉了一些“更新样式”的阶段。请注意,我不能在代码中使用“setStyleSheet”,它必须来自QSS文件。
我错过了什么?
1个回答

13

问题已解决。调用:

style()->unpolish(theWidget);
style()->polish(theWidget);

在我的小部件上,改变对象名称(setObjectName)就解决了问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接