Qt qss 动态属性-不同条件不同显示

一、

1.为了用户界面外观的动态变化,属性选择器可以与动态属性组合使用。

2.当一个属性值变化时,所引用的样式不会自动更新。相反地,必须手动触发更新才会生效。
unpolish()用于清理之前的样式,而polish()则用于添加新的样式。

二、使用举例

  qss

QFrame#frmPreImg[selected=false]{
    border:none;
    background-color:#D8DFEA;
}
QFrame#frmPreImg[selected=true]{
    border:4px solid #32CD32;
    background-color:#D8DFEA;
}

使用

      m_frmPreImg1->setProperty("selected",true);
      m_frmPreImg1->style()->unpolish(m_frmPreImg1);
      m_frmPreImg1->style()->polish(m_frmPreImg1);

m_frmPreImg1->update();

qss

QLabel#lblConnectStatusStyle[connected="close"]{
    background:url(:/images/gray.png) no-repeat;
}
QLabel#lblConnectStatusStyle[connected="ok"]{
    background:url(:/images/green.png) no-repeat;
}
void SerialPortWidget::showConnectStatus(bool isConnected)
{
    if(isConnected)
    {
        lblConnectStatus->setProperty("connected","ok");
    }
    else
    {
       lblConnectStatus->setProperty("connected","close");
    }
    lblConnectStatus->style()->unpolish(lblConnectStatus);
    lblConnectStatus->style()->polish(lblConnectStatus);
    lblConnectStatus->update();
}
原文地址:https://www.cnblogs.com/ike_li/p/11543601.html