【发布时间】:2019-08-24 16:51:44
【问题描述】:
我想动态更改 QLabel 中文本的颜色。 我已经在 ui 文件中定义了 QLabel 的颜色和样式,我想在某个事件发生时更改它。 我想改变颜色而不改变我的 QLabel 的任何其他样式。
我找到了几个解决 QLabel 中文本颜色更改问题的答案(1、2、3),它们都使用函数 setStyleSheet。这个函数工作正常,但它改变了我的字体大小和其他与 QLabel 相关的样式。
我发现问题与 setStyleSheet ignoring any previous style 有关。那里提出的解决方案涉及检索我想要维护的所有样式并再次设置它们以及文本颜色更改。
这很麻烦且难以维护。如果将来定义了更多样式,我需要查看这部分代码才能重置所有样式。
我希望能够在不更改任何其他样式的情况下更改 QLabel 文本颜色。有可能吗?
【问题讨论】:
-
为什么不使用
setPalette函数? -
@Simon one of the answers I posted above 不鼓励使用 setPalette。你不同意这个答案吗?
-
好吧,我刚刚在文档中读到:
Style sheets let you perform all kinds of customizations that are difficult or impossible to perform using QPalette alone. If you want yellow backgrounds for mandatory fields, red text for potentially destructive push buttons, or fancy check boxes, style sheets are the answer.也许它是最好的解决方案... -
@Simon 现在,我不需要更复杂的自定义,
setPalette工作正常。我担心我发布的答案中提到的可移植性问题。
标签: qt qtstylesheets qlabel