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

发布于 2024-12-29 19:54:17 字数 548 浏览 1 评论 0原文

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

我为 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 文件。

我缺少什么?

In my application, the stylesheet for the entire application is taken from a resource file loaded into the application.

I have two stylesheets defined there for a QListWidget:

QListWidget#Good{
..some color properties
}

QListWidget#Bad {
..soem different color properties
}

In a form, my QListWidget's Object name is "Good", so it adheres to the #good style. During runtime, I have a case where I want to "SetObjectName" it to "Bad" and have the style changed instantly in the UI.

I have noticed two things:

  1. merely calling "SetObjectName("Bad");" doens't change the style from methods...
  2. The only time "SetObjectName("Bad");" works is if called from the constructor of the Widget containing the QListWidget.

Obviously i am missing some "update style" phase. Note that I cannot have "setStyleSheet" in code, it must come from the QSS file.

What am I missing?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

撩起发的微风 2025-01-05 19:54:17

解决了这个问题。调用:

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

在更改 objectName (setObjectName) 后,在我的小部件上实现了这一点。

Got this resolved. Calling:

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

On my widget after the change of objectName (setObjectName) did the trick.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文