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

标签 qt qtstylesheets

在我的应用程序中,整个应用程序的样式表取自加载到应用程序中的资源文件。

我在那里为 QListWidget 定义了两个样式表:

QListWidget#Good{
..some color properties
}

QListWidget#Bad {
..soem different color properties
}

在一个表单中,我的 QListWidget 的对象名称是“Good”,因此它遵循 #good 样式。在运行时,我有一个案例,我想将其“SetObjectName”设置为“Bad”,并在 UI 中立即更改样式。

我注意到两件事:
  • 仅仅调用“SetObjectName("Bad");"不会改变方法的样式...
  • 唯一一次"SetObjectName("Bad");"如果从包含 QListWidget 的 Widget 的构造函数中调用,则有效。

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

    我错过了什么?

    最佳答案

    解决了这个问题。来电:

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

    在更改 objectName ( setObjectName ) 后,在我的小部件上成功了。

    关于qt - 更新小部件的 ObjectName 不会自动更新样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9066669/

    相关文章:

    qt - QMainWindow 中的 VTK 小部件在鼠标移动之前不会呈现

    c++ - 使用 Raspberry Pi 和 Qt 的 Poco C++

    qt - 已停用 QListWidgetItem :hover

    c++ - Qt标签中的QLabel边距和样式表填充

    qt - 文本更改动画

    qt - QML ScrollView 不滚动

    qt - QLayout强制父QWidget调整大小,即使我不希望它改变大小

    c++ - 在 Qt 中为整个小部件设置样式表

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

    Qt 样式表语法 : targeting a specific button, 不是所有按钮