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

问题描述:

在我的应用程序中,整个应用程序的样式表取自加载到应用程序中的资源文件。更新小部件的ObjectName并不会自动更新样式

我有一个QListWidget定义有两个样式表:

QListWidget#Good{ 
..some color properties 
} 

QListWidget#Bad { 
..soem different color properties 
} 

在一个形式,我QListWidget的对象名称是“好”,所以坚持到#good风格。在运行时期间,我有一种情况,我想将“SetObjectName”设置为“Bad”,并在UI中立即更改样式。

我注意到两两件事:

  1. 只是调用 “SetObjectName(” 坏 “);” doens't从方法改变风格...
  2. 唯一的时间“SetObjectName(”坏“);”如果从包含QListWidget的Widget的构造函数调用它,

显然我错过了一些“更新风格”阶段。请注意,我不能在代码中使用“setStyleSheet”,它必须来自QSS文件。

我错过了什么?

得到了解决。呼唤:

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

在我的小部件对象名的变更后(setObjectName)的伎俩。