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