样式

Qt 的内置 Widgets 使用QStyle 类来执行几乎所有的绘制。QStyle 是一个抽象的基类,它封装了 GUI 的外观和感觉,可用于使 Widgets 看起来与等效的本地 Widgets 完全一样,或赋予 Widgets 自定义的外观。

Qt 提供了一组QStyle 子类,用于模拟 Qt 支持的不同平台的本地外观(QWindowsStyle、QMacStyle 等)。这些样式内置于Qt GUI 模块中,其他样式可通过 Qt 的插件机制提供。

大多数绘制样式元素的函数都需要四个参数:

  • 一个枚举值,指定要绘制的图形元素
  • 一个QStyleOption 对象,指定如何以及在何处渲染该元素
  • 用于绘制元素的QPainter 对象
  • 用于绘制的QWidget 对象(可选)

样式从QStyleOption 类中获取渲染图形元素所需的全部信息。小部件作为最后一个参数传递,以防样式需要它来执行特殊效果(如 macOS 上的默认按钮动画),但它并不是强制性的。事实上,QStyle 可用于在任何绘制设备(而不仅仅是 widget)上绘制,在这种情况下,widget 参数就是一个零指针。

绘制系统还提供了继承自QPainterQStylePainter 类。QStylePainter 是一个方便的类,用于绘制部件内的QStyle 元素,并对QPainter 进行了扩展,在QStyle 的 API 基础上实现了一系列高级绘制函数。使用QStylePainter 的好处是参数列表大大缩短。

QIcon

QIcon 类提供不同模式和状态下的可缩放图标。

QIcon QIcon 可以生成反映图标状态、模式和大小的像素图。这些像素图从提供给图标的像素图集合中生成,并被 Qt Widgets 用来显示代表特定操作的图标。

QIcon 对象的渲染由QIconEngine 类处理。每个图标都有一个相应的图标引擎,负责按照要求的尺寸、模式和状态绘制图标。

有关部件样式和外观的更多信息,请参阅样式和样式感知部件

© 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.