知识库

wiki.linsakura.com

用户工具

站点工具


wiki:dev:qt:note:qss_dynamic_property

这是本文档旧的修订版!


Qt QSS 动态属性

有时候在代码中,需要根据某些情况下动态调整样式,但是有时候系统给出的属性如checkedunchecked已经不足以我们使用时,这个时候就可以用到动态属性的方式去实现我们要的效果。
例如,我现在除了常规状态外,另有三种状态,分别是passedwarningfailed
然后这四种状态分别有不同的背景颜色,这个时候可以通过在 类名 #控件名 后加 [自定义属性名=属性值] 的方式来实现。
比如属性名为result

Widget #label
{
  border: 2px solid black;
}
 
Widget #label[result=passed]
{
  background-color: green;
}
 
Widget #label[result=warning]
{
  background-color: yellow;
}
 
Widget #label[result=failed]
{
  background-color: red;
}

上面定义了4种状态,其中常规状态#label后不加动态属性即可。
然后当我们要切换状态时,调用setProperty()即可,如:

void Widget::on_pushButton_passed_clicked()
{
    ui->label->setText(tr("通过"));
    ui->label->style()->unpolish(ui->label);
    ui->label->setProperty("result", "passed");
    ui->label->style()->polish(ui->label);
}
wiki/dev/qt/note/qss_dynamic_property.1715569906.txt.gz · 最后更改: 2024/05/13 11:11 由 博丽幻月