Qt:样式取决于标签值
Qt: Style depending on label value
我有一个看起来很简单的问题:我想设计一个 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 是否允许一些接近的东西以便嵌入(例如在 class 中)基于值的图形行为。
我知道 QPalette,但样式条件仅与小部件 Active/Disable 状态有关,而不是其“值”。
换句话说,我正在寻找某种 ValueDependantStyle
class 或接近的东西。
有什么指点吗?我是不是看错了?
编辑:如果这很重要,我正在使用 PyQt5 进行开发。
您可以在标签上使用“模型 属性”,它以样式 sheet 定义颜色(参见 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; }
我有一个看起来很简单的问题:我想设计一个 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 是否允许一些接近的东西以便嵌入(例如在 class 中)基于值的图形行为。
我知道 QPalette,但样式条件仅与小部件 Active/Disable 状态有关,而不是其“值”。
换句话说,我正在寻找某种 ValueDependantStyle
class 或接近的东西。
有什么指点吗?我是不是看错了?
编辑:如果这很重要,我正在使用 PyQt5 进行开发。
您可以在标签上使用“模型 属性”,它以样式 sheet 定义颜色(参见 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; }