样式#

Qt 内置小部件使用 QStyle 类来执行几乎所有绘图操作。 QStyle 是一个抽象基类,它封装了 GUI 的外观和感觉,并且可以用于使小部件的外观与等效的本机小部件完全相同,或为小部件提供自定义外观。

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

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

  • 一个枚举值,指定要绘制哪个图形元素

  • 一个 QStyleOption 对象,指定如何及在哪里渲染该元素

  • 一个 QPainter 对象,用于绘制元素

  • 一个 QWidget 对象,在它上面执行绘制操作(可选)

样式从 QStyleOption 类获取渲染图形元素所需的所有信息。控件作为最后参数传递给样式,以防样式需要它来执行特殊效果(如在 macOS 上的动画默认按钮),但这不是必需的。实际上,QStyle 可以用于在任意绘制设备上绘制(不仅仅是控件),在这种情况下,控件参数是一个空指针。

../_images/paintsystem-stylepainter.png

绘图系统还提供了继承自 QPainter 的 QStylePainter 类。 QStylePainter 是一个方便类,用于在小部件内绘制 QStyle 元素,并在 QPainter 上扩展一组底层绘图函数,这些函数是在 QStyle API 上实现的。使用 QStylePainter 的优势是参数列表显著缩短。

paintsystem-icon1

QIcon

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

QIcon可以生成反映图标状态、模式和尺寸的位图。这些位图从可用于图标的位图集中生成,并由Qt小部件用来显示代表特定操作的图标。

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

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