一、简述:
Qt中每个控件的绘制工作不是由控件本身来完成,而是由QStyle完成的。
如果你想开发自定义的widgets且它们在所有的平台上看起来外观效果都非常好,那么你应该用QStyle类的相关函数去执行窗体部分区域的绘制,像:drawItemText(), drawItemPixmap(), drawPrimitive(), drawControl(), and drawComplexControl()函数。
设置风格
QApplication提供两个静态函数切换一个应用程序的界面风格:
static void setstyle(QStyle*);
static QStyle* setStyle(const QString& style);
自定义风格的窗体
控件将所有风格分为三类:基本元素(PE_)、控件元素(CE_)和复杂控件元素(CC_),QStyle的虚函数drawPrimitive、drawControl和drawComplexControl负责绘制这些类别的风格元素。
以上QStyle类的绘制函数接受4个参数:
- 枚举值,该枚举值指定哪种类型的图形元素被绘制。
- QStyleOption 类型参数。该参数指示怎么绘制、在哪个地方绘制图形元素。
- QPainter类型参数。该参数被用来绘制图形元素。
- QWidget类型参数(参数可选)。表示在widget上执行绘制;
示例:
void Widget::paintEvent(QPaintEvent * /* event */)
{
QPainter painter(this);
QStyleOptionButton button;
button.rect = option.rect;
button.text = "按钮";
button.state |= QStyle::State_Enabled;
QApplication::style()->drawControl(QStyle::CE_PushButton, &button, painter);
}