qt - 动态改变样式表

标签 qt qtstylesheets

我正在尝试使用动态属性更改 QLabel 的样式,因为我们可以像这样在 QSS 中定位此属性:

QLabel[foo = "warning"]{ color: red; }
QLabel[foo = "success"]{ color: green; }

当我使用QApplication::setStyleSheet()时,我的标签的麦粒肿确实会更新,但当我更改属性的值时,它似乎不起作用。

label = new QLabel( this );
label->setText( "some text" );
label->setProperty( "foo", "warning");

// after some event
label->setProperty( "foo", "success" );
// the label's color should be green now

我是否错过了什么,或者样式更改不能以这种方式工作?

最佳答案

无论我们在哪里更改属性,都需要添加以下代码来触发更新

label->setProperty("foo", "success");
label->style()->unpolish(label);
label->style()->polish(label);
label->update();

http://qt-project.org/wiki/DynamicPropertiesAndStylesheets

关于qt - 动态改变样式表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22562716/

相关文章:

python - 如何为 PyQt QTabwidget 着色

c++ - 我真的应该为我的应用程序使用一个 qss 文件,而不是为每个 (UI) 类使用一个 qss 文件吗?

c++ - Mac OSX 上的 Valgrind Qt 应用程序 - 报告不兼容的处理器

linux - 移植 Qt 项目,调试/发布配置?

c++ - 如何在 QSlider 的侧面添加图像

python - 为什么QWidget在继承时表现不同

qt - 如何仅覆盖一个属性:value pair in Qt StyleSheet

c++ - 为系统托盘和 QAction (QT) 即时使用翻译

c++ - Qt Stylesheet按钮背景颜色

python - QGraphicsView如何接收鼠标移动事件?