首页 > 解决方案 > 如何恢复 QSS 属性的默认系统值?

问题描述

Qt QSS 被传播给子级,如果一个父级将其样式表设置为color: red,则其所有子级都将应用此样式表。如果你明确设置QLabel {color: red},那么只有 QLabel 孩子会被关注。

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

我怎么能达到这样的目标children->setStyleSheet("color: default");

标签: qtqtstylesheets

解决方案


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

但是 AFAIK 你总是可以将样式表设置为一个空字符串,比如:

children->setStyleSheet("");

有时,在某些平台(主要是 Windows)上,小部件确实重置了它们的外观,但没有得到所有的系统样式(在 Windows 上它们变得灰色、角落和沉闷),并非总是如此,但会发生。

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

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

推荐阅读