Qt样式表官方文档(一)——概述

声明

本文是对Qt的Style Sheets官方文档的翻译,链接是Qt Style Sheets | Qt Widgets 6.7.1

前言

Qt样式表是一种强大的机制,它允许您自定义控件的外观,此外通过子类化QStyle实现也可以自定义控件的外观。Qt样式表的概念、术语和语法很大程度上受到HTML层叠样式表(CSS)的启发,但适应了控件的世界。

注意:如果Qt样式表与设置控件外观的函数(如QWidget::setFont()或QTreeWidgetItem::setBackground())在相同的小部件上使用,如果设置冲突,样式表将优先考虑。

概述

样式表是文本规范,可以使用QApplication::setStyleSheet()在整个应用程序上设置,也可以使用QWidget::setStyleSheet()在特定控件(及其子部件)上设置。如果在不同的层次上设置了几个样式表,Qt将从所有设置的样式表中派生出有效的样式表。这叫做级联。

例如,下面的样式表指定所有的QLineEdit都应该使用黄色作为背景色,所有的QCheckBox都应该使用红色作为文本色:

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

对于这种定制,样式表比QPalette强大得多。例如,对于QPushButton,将QPalette::Button角色设置为红色以获得红色按钮可能很诱人。然而,这并不能保证适用于所有样式,因为样式作者受到不同平台的指导方针和(在Windows和macOS上)本地主题引擎的限制。

样式表允许您执行各种单独使用QPalette难以或不可能执行的定制。如果您希望强制性字段的背景为黄色,可能具有破坏性的按钮或花哨的复选框的文本为红色,样式表就是答案。

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

此外,可以使用样式表为应用程序提供独特的外观,而不必子类化QStyle。例如,您可以为单选按钮和复选框指定任意图像,以使它们脱颖而出。使用这种技术,您还可以实现通常需要子类化几个样式类的小型定制,例如指定样式提示。

当样式表起作用时,由QWidget::style()返回的QStyle是包装器“样式表”样式,而不是特定于平台的样式。包装器样式确保任何活动样式表都受到尊重,否则将绘图操作转发到底层的,特定于平台的样式(例如,Windows上的QWindowsVistaStyle)。

从Qt 4.5开始,Qt样式表完全支持macOS。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值