【问题标题】:Cascading Multiple Qt Style Sheets in one application在一个应用程序中级联多个 Qt 样式表
【发布时间】:2015-05-31 05:58:19
【问题描述】:

Qt(以及 PyQt)允许您将 QSS(Qt 样式表)文件添加到 QApplication,并为您创建的每个单独的小部件添加一个。您可以使用以下 Python/PyQt 代码设置应用程序的样式表:

# app is a QApplication and styleSheet is a str.
app.setStyleSheet(styleSheet)

但是,setStyleSheet() 函数只允许您为 QApplication 指定一个 QSS 文件。这与 CSS 不同,后者允许将任意数量的样式表应用于单个网页。

我正在用 PyQt 编写一个允许用户自定义主题的程序。该程序有一个主 QSS 文件,并且主题应该能够包含附加的 QSS,这些 QSS 将层叠在它之上。然而,由于这个明显的 Qt 限制,这似乎是不可能的。

我想到的一个想法是我可以将程序的默认样式表分配给 QApplication,并将当前主题的样式表分配给 QMainWindow。不过,这似乎是一种解决方法,而不是一个好主意。

有没有像这样添加两个 Qt 样式表的好方法?

【问题讨论】:

  • 为什么不:app.setStyleSheet(stylesheet1 + stylesheet2)
  • @ekhumoro 这是否会导致stylesheet2 中的样式规则覆盖stylesheet1 中的样式规则,因为它们排在第二位?
  • 这与普通的 HTML 没有什么不同,其中样式表只是按照它们在文档中出现的顺序连接在一起。之后,应用 CSS 特性的标准规则。
  • @ekhumoro 您的建议有效!这应该是一个可以接受的答案。
  • @agentnate。好的,谢谢 - 我已经添加了答案。

标签: qt pyqt qt5 pyqt5 qtstylesheets


【解决方案1】:

你可以这样做:

app.setStyleSheet(stylesheet1 + stylesheet2)

这将与普通 HTML 一样工作,其中样式表按照它们在文档中出现的顺序简单地连接在一起。之后,应用 CSS 特异性的标准规则。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    相关资源
    最近更新 更多