若是咱們用painter一個一個的繪製直線,圓等在控件上,繪製效率會不高。爲了提升效率,咱們能夠設置一個畫布pixmap,將全部的基礎圖形畫布上,而後把畫布畫在控件上。this
#include <QPixmap> void Widget::paintEvent(QPaintEvent *) { QPixmap pixmap(size()); //將畫布的大小設置爲和widget同樣的 QPainter painter(&pixmap); //在畫布上常見一個畫家 painter.setBrush(Qt::yellow); painter.setPen(QPen(Qt::red, 2, Qt::DashLine)); painter.drawEllipse(QPoint(95, 333), 50, 50); painter.drawText(QPoint(50, 50), "Hello world"); painter.end(); //畫完了 painter.begin(this); //在Widget上開始繪製 painter.drawPixmap(0, 0, pixmap); //在控件上繪製pixmap圖像 painter.drawLine(QPoint(50, 50), QPoint(60, 10)); }