更新小部件的ObjectName并不会自动更新样式
问题描述:
在我的应用程序中,整个应用程序的样式表取自加载到应用程序中的资源文件。更新小部件的ObjectName并不会自动更新样式
我有一个QListWidget定义有两个样式表:
QListWidget#Good{
..some color properties
}
QListWidget#Bad {
..soem different color properties
}
在一个形式,我QListWidget的对象名称是“好”,所以坚持到#good风格。在运行时期间,我有一种情况,我想将“SetObjectName”设置为“Bad”,并在UI中立即更改样式。
我注意到两两件事:
- 只是调用 “SetObjectName(” 坏 “);” doens't从方法改变风格...
- 唯一的时间“SetObjectName(”坏“);”如果从包含QListWidget的Widget的构造函数调用它,
显然我错过了一些“更新风格”阶段。请注意,我不能在代码中使用“setStyleSheet”,它必须来自QSS文件。
我错过了什么?
答
得到了解决。呼唤:
style()->unpolish(theWidget);
style()->polish(theWidget);
在我的小部件对象名的变更后(setObjectName
)的伎俩。