知识库

wiki.linsakura.com

用户工具

站点工具


wiki:dev:qt:note:qss_dynamic_property

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
wiki:dev:qt:note:qss_dynamic_property [2024/05/13 11:11]
博丽幻月
wiki:dev:qt:note:qss_dynamic_property [2024/05/13 11:19] (当前版本)
博丽幻月
行 1: 行 1:
 ====== Qt QSS 动态属性 ====== ====== Qt QSS 动态属性 ======
 +此条目的demo代码:{{ :wiki:dev:qt:note:qssdynamicproperty.zip | QssDynamicProperty.zip}}\\
 +\\
 有时候在代码中,需要根据某些情况下动态调整样式,但是有时候系统给出的属性如''checked''、''unchecked''已经不足以我们使用时,这个时候就可以用到动态属性的方式去实现我们要的效果。\\ 有时候在代码中,需要根据某些情况下动态调整样式,但是有时候系统给出的属性如''checked''、''unchecked''已经不足以我们使用时,这个时候就可以用到动态属性的方式去实现我们要的效果。\\
 例如,我现在除了常规状态外,另有三种状态,分别是''passed''、''warning''、''failed'',\\ 例如,我现在除了常规状态外,另有三种状态,分别是''passed''、''warning''、''failed'',\\
行 10: 行 12:
 } }
  
-Widget #label[result=passed]+Widget #label[result='passed']
 { {
   background-color: green;   background-color: green;
 } }
  
-Widget #label[result=warning]+Widget #label[result='warning']
 { {
   background-color: yellow;   background-color: yellow;
 } }
  
-Widget #label[result=failed]+Widget #label[result='failed']
 { {
   background-color: red;   background-color: red;
行 30: 行 32:
 void Widget::on_pushButton_passed_clicked() void Widget::on_pushButton_passed_clicked()
 { {
-    ui->label->setText(tr("通过")); 
     ui->label->style()->unpolish(ui->label);     ui->label->style()->unpolish(ui->label);
     ui->label->setProperty("result", "passed");     ui->label->setProperty("result", "passed");
行 36: 行 37:
 } }
 </code> </code>
 +如果是设置为常规状态,即没有属性的初始状态,则值设置为''QVariant()'',如:\\
 +<code cpp>
 +ui->label->setProperty("result", QVariant());
 +</code>
 +另外,你可能注意到了,在更改样式的时候,调用了''unpolish()''和''polish()'',这是为了先取消旧的样式,再润饰新的样式,不然样式不会生效。\\
wiki/dev/qt/note/qss_dynamic_property.1715569906.txt.gz · 最后更改: 2024/05/13 11:11 由 博丽幻月