qt - 如何恢复 QSS 属性的默认系统值?
问题描述
Qt QSS 被传播给子级,如果一个父级将其样式表设置为color: red
,则其所有子级都将应用此样式表。如果你明确设置QLabel {color: red}
,那么只有 QLabel 孩子会被关注。
如果他们设置了自己的值,则可以覆盖孩子的样式表,children->setStyleSheet("color: blue");
但我找不到将属性重置为默认值的方法。系统或 Qt 设置的值,如果我们没有在任何父样式表中设置此属性。
我怎么能达到这样的目标children->setStyleSheet("color: default");
?
解决方案
你不需要,通常情况下。父小部件可以有一些复杂的样式表,这样它就不会以任何不希望的方式影响子小部件。我更喜欢将这些样式存储在资源文件中,这是一种常见的方式。
但是 AFAIK 你总是可以将样式表设置为一个空字符串,比如:
children->setStyleSheet("");
有时,在某些平台(主要是 Windows)上,小部件确实重置了它们的外观,但没有得到所有的系统样式(在 Windows 上它们变得灰色、角落和沉闷),并非总是如此,但会发生。
如果某些样式表是动态应用的,但您没有得到结果,“官方 crutchy 样式更新”会有所帮助,例如:
someWidget->style()->unpolish(someWidget);
someWidget->style()->polish(someWidget);
推荐阅读
- swift - 为什么一个进程被它后面的另一个进程挂起?
- python - 检测移动应用用户是否在代理后面
- c# - 将 Channels 与 SignalR 服务器到客户端流式传输一起使用时,是否保证将服务器端 Complete 传递给客户端?
- python - 获取 LSTM 模型 Python 的输出方程
- kubernetes - 在 Rancher 上使用 configMap UI 打开/关闭 liveness probe
- machine-learning - Keras 模型训练精度在训练时急剧下降
- java - Java Lambda 的 ArrayIndexOutOfBoundsException
- gpu - 像 gl_SemanticsRelaxed、gl_SemanticsRelease 和 gl_SemanticsAcquire 这样的 vulkan 内存语义标志在 Vulkan GLSL 中的作用是什么?
- javascript - 如何使用 D3V6 缩放我的流图?
- windows - Elasticsearch 错误:无法评估 jvm.options