间QPainter的文档,当绘制设备是QWidget时,QPainter 对象只能在paintEvent() 函数,或者被paintEvent() 函数调用的函数中进行绘制。
构造的时候,或者开始画之前,需要首先传入一个QPaintDevice 来制定是在哪里画,比如构造的时候传入一个this指针,或者在开始画之前使用begin() 函数指定。
对于作为成员的QPainter,其绘制过程如下:
void PaintedWidget::paintEvent(QPaintEvent *)
{
painter.begin(this);
painter.drawLine(200, 100, 650, 100);
painter.setPen(Qt::red);
painter.drawRect(50, 50, 100, 400);
painter.setPen(QPen(Qt::blue, 5));
painter.setBrush(Qt::green);
int startAngle = 30 * 16;
int spanAngle = 120 * 16;
painter.drawPie(150, 150, 500, 500, startAngle, spanAngle);
painter.setPen(QPen(Qt::black, 5));
painter.drawPoint(400, 50);
//painter.drawEllipse(50, 150, 400, 200);
painter.end();
}