QPixmap *pix;//图片,画布
pix = new QPixmap(ui->widget->width(),ui->widget->height());
pix->fill(Qt::white);
ui->widget->installEventFilter(this); //这行不能省,事件过滤器
bool eventFilter(QObject *obj, QEvent *event);
bool Widget::eventFilter(QObject *watched, QEvent *event) //用过滤器eventFilter()拦截QWidget中的QEvent::Paint事件
{
if(watched ==ui->widget && event->type() == QEvent::Paint)
paint();
return QWidget::eventFilter(watched,event);
}
然后手动绘图
void Widget::paint() //绘图
{
QPainter painter(ui->widget);//画布
painter.setRenderHints(QPainter::SmoothPixmapTransform |
QPainter::Antialiasing);
painter.drawPixmap(0,0,*pix);
}