如何解决Qt:样式取决于标签值
我有一个看起来很简单的问题:我想设计一个 QLabel,它的值动态变化(这里没有问题)并且其背景颜色相应地变化(这就是问题)。 >
当然,我知道我可以做类似的事情(伪代码):
function on_new_value(value):
label.setText(value)
if value>10:
label.setBackgroundColor(RED)
else if value<0:
label.setBackgroundColor(RED)
else:
label.setBackgroundColor(GREEN)
但是那种混合了模型和视图。理想情况下,我希望能够使用 Qt 样式表的扩展版本,如下所示:
QLabel { background: green; }
QLabel { if value>10: background: red; }
QLabel { if value<0: background: red; }
显然,这是不可能的。但我想知道 Qt 是否允许一些接近的东西来嵌入(例如在类中)基于值的图形行为。
我知道 QPalette,但样式条件仅与小部件的活动/禁用状态有关,而不是其“值”。
换句话说,我正在寻找一种 ValueDependantStyle
类或类似的东西。
有什么指点吗?我看错了吗?
编辑:如果这很重要,我正在使用 PyQt5 进行开发。
解决方法
您可以在标签上使用“模型属性”,它定义样式表中的颜色(参见关于属性的 Qt Style Sheet Reference):
function on_new_value(value):
label.setText(value)
if value>10:
label.setProperty("HasError","true")
else if value<0:
label.setProperty("HasError","true")
else:
label.setProperty("HasError","false")
QLabel[HasError="false"] { background: green; }
QLabel[HasError="true"] { background: red; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。