如何恢复QSS属性的默认系统值?

时间:2019-01-28 14:06:59

标签: qt qtstylesheets

Qt QSS传播到子级,如果一个父级将其样式表设置为color: red,则其所有子级都将应用此样式表。如果您明确设置QLabel {color: red},则仅关注QLabel子级。

如果子级设置了自己的值children->setStyleSheet("color: blue");,则可能会覆盖子级的样式表,但是我找不到将属性重置为默认值的方法。如果没有在任何父项的样式表中设置此属性,则由系统或Qt设置的值。

我如何实现类似children->setStyleSheet("color: default");的东西?

1 个答案:

答案 0 :(得分:-1)

通常不需要。父窗口小部件可以具有一些复杂的样式表,因此不会以任何不希望的方式影响子窗口小部件。我更喜欢将这些样式存储在资源文件中,这是一种常见的方式。

但是AFAIK始终可以将样式表设置为空字符串,例如:

children->setStyleSheet("");

有时候,在某些平台上(大多数是Windows),小部件 do 重置其外观,但并不能获得全部的系统样式(在Windows上,它们会变灰,变角和变暗),并非总是如此,但是发生。

如果某些样式表是动态应用的,而您没有得到结果,则“官方的有害样式更新”会有所帮助,例如:

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