我可以通过样式表更改对象名称来更改 QObject 的样式吗?

问题描述 投票:0回答:1

我最近了解到使用样式表在 Qt 中设置对象样式的好方法。现在我想在特定事件发生后更改 QFrame 的背景颜色。所以我设置了两个条目:

QFrame#ColorA {
    background-color: #FFFFFF;
}

QFrame#ColorB {
    background-color: #B2D235;
}

并给 QFrame

ObjectName
ColorA
;它显示得非常好。但是当所述事件发生时,我将
ObjectName
设置为
ColorB
,UI 中没有任何变化。

我知道我可以通过将样式表设置为

background-color: #B2D235
来更改颜色,但我认为一定有更好的方式通过样式表。

c++ qt qtstylesheets
1个回答
0
投票

要使样式修改生效,必须调用unpolish()/polish()

因此,当您的事件发生时,添加类似的内容(如果您直接从 QFrame 子类调用它)

style()->unpolish(this);
style()->polish(this);

或者像这样

style()->unpolish(ui->your_frame);
style()->polish(ui->your_frame);

如果您从包含 QFrame 的类中调用它(我想您的 QFrame 是在 UI 文件中定义的)。

© www.soinside.com 2019 - 2024. All rights reserved.