一,QPainter绘图
Qt里的所有绘图,比如一个按钮和一个Label的显示,都有绘图系统来执行。绘图系统基于 QPainter、QPaintDevice和QPainEngine类。QPainter是可以直接用来操作绘图的类,而 QPaintDevice和QPainEngine都比QPainter更底层,我们只需要了解一下QPaintDevice和 QPainEngine就行了,用下面一张图来表示它们的关系。
用于显示的类,如Widget/QPixmap/QImage/Qlabel等可视类控件都可以充当绘图区域的“画布”,从 QWidget继承的类都有virtual void paintEvent(QPaintEvent *event)属性。paintEvent()是一个虚函数,它在qwidget.h头文件的protected修饰符下面。paintEvent()事件可以被重写。在绘图事件处理函数中创建QPainter对象,然后使用这个QPainter在绘图设备上绘制
void MainWindow::paintEvent(QPaintEvent *event)
{
//创建与绘制设备关联的对象QPainter;指定画图的对象,this代表本Widget
QPainter painter(this);
//绘制图形,先创建一个画笔,设置颜色等,然后在窗口中心绘制文本"subomb"
painter.setPen(Qt::red);
painter.drawText(rect(), Qt::AlignCenter, "subomb"); //绘制文本
}