Qt样式表

Qt样式表是一个强大的机制,它允许您自定义小部件的外观,而不仅仅是通过从类派生QStyle所能做到的。Qt样式表的概念、术语和语法深受HTML 级联样式表(CSS)的启发,但为小部件的世界所改编。

主题

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

概述

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

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

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

对于这类定制,样式表比QPalette更强大。例如,可能很想将QPalette::Button角色设置为红色,以获得一个红色按钮。然而,这并不保证在所有样式中都有效,因为样式作者受到不同平台指南的限制,并且(在Windows和macOS上)由原生主题引擎所限制。

样式表允许您执行使用QPalette单独执行困难或不可能完成的任何定制。如果您想要强制字段有黄色背景,链接按钮有红色文字,或复杂的复选框,样式表就是答案。

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

此外,样式表可以用来为您的应用程序提供独特的视觉风格和操作感觉,而不必为QStyle派生子类。例如,您可以指定任意图像来突出显示单选按钮和复选框。使用这种技术,您还可以实现通常需要为几个样式类派生子类的细微定制,例如指定一个样式提示

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

自Qt 4.5以来,Qt样式表完全支持macOS。

© 2024 The Qt Company Ltd. 本文档中包含的文档贡献是各自所有者的版权。本提供在此的文档根据自由软件基金会发布的GNU自由文档许可协议版本1.3的条款进行许可。Qt及其相关标志是芬兰和/或全球其他国家的The Qt Company Ltd.的商标。所有其他商标均为其各自所有者的财产。