我有一些标签,我希望有时看起来是灰色的,这取决于一些变量。其中一些标签在点击时会产生影响(例如更改这些因素)。无论用户使用什么主题,我都希望自己的程序看起来不错,所以我无法对颜色进行硬编码。我怎么能这样做?
我可以想到几种解决方案,但它们都有一些令人讨厌的缺点:
更改文字颜色:这听起来是最简单的解决方案,但由于我想支持主题/调色板,因此有点困难。特别是如果在程序运行时更改系统主题,那么我必须再次更新调色板。
致电setDisabled()
并覆盖event
:这只是感觉错误,并且还有可能会覆盖平台行为。
创建一个自定义文本小部件:当然可以,但它需要批次代码重复和浪费时间,或者是相当一半,有限的实施。
通过一对paintEvent
来电话包裹setDisabled()
号码。不。另外,我不知道这是否适用于并发。
答案 0 :(得分:0)
您可以设置此标签的样式表,因为它是一个Widget。它适用于我,当主题因操作系统切换或其他原因而改变时,它保持不变。
label.setStyleSheet("color: gray")
样式表有CSS语法。你可以用它制作精彩的东西,只需查看reference properties和一些examples就可以看到一些不同的小部件。
答案 1 :(得分:0)
从"已禁用"复制画笔。调色板的作用是" Active"作用:
palette = mylabel.palette()
palette.setCurrentColorGroup(QtGui.QPalette.Disabled)
palette.setColorGroup(QtGui.QPalette.Normal, palette.windowText(),
palette.button(), palette.light(), palette.dark(), palette.mid(),
palette.text(), palette.brightText(), palette.base(), palette.window())
mylabel.setPalette(palette)
mylabel
现在应该看起来已经被禁用了,但事实上并非如此。
这适用于任何小部件,而不仅仅是标签。