方法一:无参构造画家时,需要手动调用begin(this)和end() 函数
void MyWidget::paintEvent(QPaintEvent *)
{
QPainter p;
p.begin(this);
p.drawLine(...); // drawing code
p.end();
}
。。
方法二:有参构造画家时,系统会自动调用begin(this)和end() 函数,可以立即直接使用画家进行绘图。
这个构造函数对于寿命较短的画家很方便,例如在QWidget::paintEvent()中,并且只应该使用一次
void MyWidget::paintEvent(QPaintEvent *)
{
QPainter p(this);
p.drawLine(...); // drawing code
}
方法三:创建画布,将其作为参数构造画家
QPixmap pix=QPixmap(size());//创建画布
pix.fill(Qt::white);
QPainter painter(&pix);//创建画家
.......
//使用画家绘图
p.drawLine(...); // drawing code
.......
//将pixmap绘制到窗体上
painter.end();
painter.begin(this);
painter.drawPixmap(0,0,pix);//将pixmap画到窗体