Qt 样式表
Qt 样式表(Qt Style Sheets)是一种强大的机制,除了通过子类化QStyle 已能实现的功能外,它还允许您自定义 widget 的外观。Qt 样式表的概念、术语和语法在很大程度上受到 HTML层叠样式表(CSS)的启发,但又适应于 widgets 的世界。
主题
注意: 如果 Qt 样式表与设置 widgets 外观的函数(如QWidget::setFont() 或QTreeWidgetItem::setBackground() )用于相同的 widgets,则在设置发生冲突时,样式表将优先。
概述
样式表是一种文本规范,可以使用QApplication::setStyleSheet() 对整个应用程序进行设置,也可以使用QWidget::setStyleSheet() 对特定部件(及其子部件)进行设置。如果在不同级别设置了多个样式表,Qt 会从所有已设置的样式表中推导出有效的样式表。这就是级联。
例如,下面的样式表指定所有QLineEdit都使用黄色作为背景颜色,所有QCheckBox都使用红色作为文本颜色:
对于这种自定义,样式表要比QPalette 功能强大得多。例如,将QPushButton 的QPalette::Button 角色设为红色,以获得一个红色按钮,这可能很诱人。不过,这并不能保证适用于所有样式,因为样式作者受到不同平台指南以及(Windows 和 macOS 上的)本地主题引擎的限制。
样式表可让您执行各种自定义操作,而这些操作很难或无法单独使用QPalette 执行。如果你想为必填字段添加黄色背景,为具有潜在破坏性的按钮或花哨的复选框添加红色文本,样式表就是你的最佳选择。
样式表是在当前widget style 的基础上应用的,这意味着你的应用程序将尽可能看起来像本地程序,但任何样式表限制都会被考虑在内。与调色板的摆弄不同,样式表提供了保证:如果您将QPushButton 的背景颜色设置为红色,您就可以放心,在所有平台上的所有样式中,按钮的背景都将是红色。此外,Qt Widgets Designer 还提供了样式表集成功能,可以轻松查看样式表在不同widget styles 中的效果。
此外,样式表还可用于为应用程序提供独特的外观和感觉,而无需对QStyle 进行子类化。例如,您可以为单选按钮和复选框指定任意图像,使其与众不同。使用这种技术,您还可以实现通常需要对多个样式类进行子类化的小定制,例如指定style hint 。
当样式表处于活动状态时,由QWidget::style() 返回的QStyle 是一个封装的 "样式表 "样式,而不是特定于平台的样式。包装样式确保任何活动样式表都得到尊重,否则绘图操作将转发到底层的特定平台样式(例如 Windows 上的 QWindowsVistaStyle)。
自 Qt 4.5 起,Qt 样式表完全支持 macOS。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.