【发布时间】:2017-07-28 14:13:51
【问题描述】:
我有一些标签有时会显示为灰色,具体取决于某些变量。其中一些标签在单击时会产生影响(例如更改这些因素)。无论用户使用什么主题,我都希望我的程序看起来不错,所以我不能对颜色进行硬编码。我该怎么做?
我可以想到几种解决方案,但它们都有一些令人讨厌的缺点:
更改文本颜色: 听起来是最简单的解决方案,但它有点困难,因为我想支持主题/调色板。特别是如果在程序运行时更改了系统主题,那么我必须再次更新调色板。
调用
setDisabled()并覆盖event:这只是感觉错误,并且还有覆盖平台行为的风险。制作自定义文本小部件:当然可以,但需要大量代码重复和浪费时间,或者是相当半途而废和有限的实施。
用一对
setDisabled()调用包裹paintEvent: 不,只是不。另外,我不知道这是否适用于并发。
【问题讨论】:
-
也许和
QWidget.setPalette()一起玩? -
据我所见,这些都不是特别适合不断变化的主题。
-
尽管有it's limitations,但操纵调色板可能是最好的方法。如果您使用color roles,调色板将跟踪当前主题。