样式(继承QStyle的类)代表小部件绘制并封装 GUI 的外观。 QStyle 类是一个抽象基类,它封装了 GUI 的外观。 Qt 的内置小部件使用它来执行几乎所有的绘图,确保它们看起来与等效的原生小部件完全一样。
Qt带有一系列内置样式,某些样式仅在特定平台上可用。自定义样式可作为插件使用,或者通过使用 QStyleFactory::create()创建特定样式类的实例并使用QApplication::setStyle()设置它。
Qt技术交流群:166830288 欢迎一起进群讨论
QStyle 函数
QStyle类定义了三个用于绘制图元、控件和复杂元素的函数: drawPrimitive(), drawControl()和drawComplexControl(),这些函数采用以下参数:
并非所有小部件都向自己发送指针,如果发送给函数的样式选项不包含您需要的信息,应该检查小部件实现来查看是否发送指向自身的指针。
QStyle 类还提供了绘制元素时使用的辅助函数。drawItemText()函数在指定的矩形内绘制文本,将QPalette作为参数;drawItemPixmap()函数有助于在指定的边界矩形内对齐像素图。
其他 QStyle 函数对绘图的函数进行各种计算,如果小部件自己绘制多个样式元素,它们也使用这些函数来计算大小提示和边界矩形。 与绘制元素的函数一样,辅助函数通常采用相同的参数。
QStyle 也有函数polish() 和unpolish(),所有小部件在显示之前被发送到 Polish() 函数,在它们被隐藏时被发送到 unpolish()。您可以使用这些函数来设置小部件的属性或执行您的样式所需的其他工作,例如,如果您需要知道鼠标何时悬停在小部件上,则需要设置WA_Hover 小部件属性,State_MouseOver 状态标志将在小部件的样式选项中设置。
QStyle 有一些静态辅助函数,可以完成一些常见和困难的任务。 他们可以根据滑块的值计算滑块句柄的位置,并在考虑反向布局的情况下变换矩形并绘制文本。
重新实现 QStyle 虚函数的常用方法是对不同于超类的元素进行处理; 对于所有其他元素,您可以简单地使用超类实现。
Qt组件推荐