我最近了解到使用样式表在 Qt 中设置对象样式的好方法。现在我想在特定事件发生后更改 QFrame 的背景颜色。所以我设置了两个条目
QFrame#ColorA {
background-color: #FFFFFF;
}
QFrame#ColorB {
background-color: #B2D235;
}
并为 QFrame 指定了 ObjectName
ColorA
,它显示得非常好。但是,当所述事件发生并且我将 ObjectName 设置为 ColorB
时,UI 中没有任何变化。
我知道我可以通过将样式表设置为
background-color: #B2D235
来更改颜色,但我认为必须有更好的方式通过样式表。
要使样式修改生效,必须调用unpolish()/polish()。
因此,当您的活动发生时,请添加类似的内容
style()->unpolish(this);
style()->unpolish(ui->your_widget);
style()->polish(this);
style()->polish(ui->your_widget);