【问题标题】:Updating ObjectName of widget does not not update the style automatically更新小部件的 ObjectName 不会自动更新样式
【发布时间】:2012-02-22 09:53:40
【问题描述】:

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

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

QListWidget#Good{
..some color properties
}

QListWidget#Bad {
..soem different color properties
}

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

我注意到两件事:

  1. 仅仅调用“SetObjectName("Bad");"不会改变方法的样式...
  2. 唯一一次"SetObjectName("Bad");"如果从包含 QListWidget 的 Widget 的构造函数调用,则有效。

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

我错过了什么?

【问题讨论】:

    标签: qt qtstylesheets


    【解决方案1】:

    解决了这个问题。调用:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-22
      • 2019-08-31
      • 1970-01-01
      • 2022-06-13
      • 1970-01-01
      • 1970-01-01
      • 2011-05-24
      相关资源
      最近更新 更多