样式设置

Qt 的内置控件几乎全部使用 `QStyle ` 类来完成绘制工作。`QStyle ` 是一个抽象基类,它封装了 GUI 的外观和风格,既可以用于使控件的外观完全与相应的原生控件一致,也可以用于为控件赋予自定义的外观。

Qt 提供了一组与所支持平台的原生外观相匹配的 `QStyle ` 实现。`windows ` 和 `fusion ` 样式内置于 `Qt Widgets ` 模块中;而平台样式(如 `windows11 ` 和 `macos`)则作为插件加载。`QStyleFactory ` 列出了运行时可用的样式。应用程序还可以提供自己的样式,既可以作为链接库,也可以作为插件。

用于绘制样式元素的大多数函数都接受四个参数:

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

样式会从QStyleOption 类中获取渲染图形元素所需的所有信息。 若样式需要该控件来实现特殊效果(例如 macOS 上的动画默认按钮),则将控件作为最后一个参数传递,但这并非强制要求。实际上,QStyle 可用于在任何绘图设备(不仅限于控件)上进行绘制,此时控件参数为零指针。

显示 QStylePainter 继承自 QPainter 的示意图

绘制系统还提供了继承自 `QPainter` 的 `QStylePainter ` 类。`QStylePainter ` 是一个用于在小部件内部绘制 `QStyle ` 元素的便捷类,它在 `QStyle` API 基础上扩展了 `QPainter `,提供了一组高级绘制函数。使用 `QStylePainter ` 的优势在于参数列表会显著简化。

Qt 中使用的图标QIcon

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

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

QIcon 对象的渲染由QIconEngine 类负责。每个图标都有一个对应的图标引擎,该引擎负责根据请求的大小、模式和状态绘制图标。

有关小部件样式和外观的更多信息,请参阅《样式与支持样式的控件》以及《Qt Widgets 的样式设置方法》。

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