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/

相关文章:

c++ - 从 Qt5 ColorDialog 中删除颜色渐变窗口

qt - 如何删除下拉菜单的下拉箭头,同时保留QSS的border-image?

pyqt - 如何在 QScrollArea 中为 QScrollBar 设置样式表?

c++ - Qt : Setting a border bottom on QtableView disables selection-background-color

qt - 调整 QGroupBox 中的标题位置(使用样式表)

c++ - qss中设置QTreeView选中项样式

c++ - C++对象属性的QML属性

c++ - 在Qt中,如何使用定时器来启用/禁用一个功能?

qt - 如何通过拖动 Widget 的角来调整 Widget 上的 QTableWidget 大小

c++ - Qt 子窗口放置