Qt Style Sheets

Qt 样式表是一种强大的机制,允许您自定义小部件的外观,这是在通过子类化QStyle已经可行的基础上的补充。Qt 样式表的概念、术语和语法在很大程度上受到 HTML级联样式表 (CSS)的启发,但适用于小部件的世界。

概述

        样式表是文本规范,可以使用QApplication::setStyleSheet() 在整个应用程序上设置,或者使用QWidget::setStyleSheet() 在特定的小部件(及其子部件)上设置。如果在不同级别设置了多个样式表,Qt 会从所有已设置的样式表中派生有效的样式表。这称为层叠。

        例如,以下样式表指定所有QLineEdit应使用黄色作为其背景颜色,并且所有QCheckBox应使用红色作为文本颜色:

QLineEdit { background: yellow }
QCheckBox { color: red }

        对于这种定制,样式表比QPalette强大得多。例如,可能会很想将QPalette::Button角色设置为红色以获得红色的QPushButton。然而,这并不能保证在所有样式中都有效,因为样式作者受到不同平台的指南以及(在 Windows XP 和 macOS 上)本地主题引擎的限制。

         样式表允许您进行各种仅使用QPalette难以或无法进行的自定义。如果您希望必填字段具有黄色背景、潜在破坏性的按钮具有红色文本,或者想要精美的复选框,样式表就是答案。

        样式表应用于当前小部件样式之上,这意味着您的应用程序将尽可能看起来具有原生风格,但任何样式表约束都将被考虑在内。与调色板调整不同,样式表提供保证:如果您将QPushButton的背景颜色设置为红色,您可以确信该按钮在所有样式、所有平台上都将具有红色背景。此外,Qt 设计器提供样式表集成,使得在不同小部件样式中查看样式表的效果变得容易。

        此外,样式表可用于为您的应用程序提供独特的外观和感觉,而无需对QStyle进行子类化。例如,您可以为单选按钮和复选框指定任意图像以使它们脱颖而出。使用此技术,您还可以实现通常需要对多个样式类进行子类化的较小自定义,例如指定样式提示。下面描绘的样式表示例定义了两个独特的样式表,您可以随意尝试和修改。 

在 Windows XP 上运行的 Coffee 主题

 在 Windows XP 上运行的 Pagefold 主题

在 Ubuntu Linux 上运行的 Coffee 主题

在 macOS 上运行的 Pagefold 主题

当样式表处于活动状态时,由QWidget::style()返回的QStyle是一个包装的“样式表”样式,而不是特定于平台的样式。该包装样式确保任何活动的样式表都得到遵循,否则将绘图操作转发到基础的、特定于平台的样式(例如,在 Windows XP 上的 QWindowsXPStyle)。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

春意盎然的三月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值