样式表(01):【纲】Qt Style Sheets [官翻]

文章目录

  • 概述

Qt Style Sheets

Qt样式表是一种强大的机制,除了通过子类QStyle已经可以实现的功能外,它还允许您自定义小部件的外观。Qt样式表的概念、术语和语法深受HTML层叠样式表(CSS)的启发,但适应了小部件的世界。

话题:

  1. 概述
  2. 样式表语法
  3. Qt设计器集成
  4. 使用样式表定制Qt小部件
  5. Qt样式表参考
  6. Qt样式表示例

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

概述

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

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

对于这种定制,样式表比QPalette强大得多。例如,将QPalette::Button角色设置为red对于QPushButton来说是很有诱惑力的,以获得一个红色按钮。但是,这并不能保证适用于所有样式,因为样式作者受到不同平台指导原则的限制,并且(在Windows和macOS上)受到本机主题引擎的限制。

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

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

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

样式表(01):【纲】Qt Style Sheets [官翻] img
Pagefold theme running on Windows Coffee theme running on Ubuntu Linux Pagefold theme running on macOS

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

自qt4.5以来,Qt样式表完全支持macOS。

来源:hitzsf

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月20日
下一篇 2021年1月20日

相关推荐