0

这是主程序的小案例:

void Widget::paintEvent(QPaintEvent *){
    QPainter *painter1 = new QPainter(this);
    QPainter *painter2 = new QPainter(this);

    delete painter1;

    painter2->drawLine(50,50,200,100);     
}

它正在崩溃。如果删除最后一行,我会收到以下警告消息:

QPaintDevice:无法销毁正在绘制的绘制设备

4

2 回答 2

2

QPainter对象与QPaintDevice. 在下面第三个链接的注释中,它讨论了QPainter对象在QWidget::paintEvent().

http://qt-project.org/doc/qt-4.8/qpainter.html#details

http://qt-project.org/doc/qt-4.8/paintsystem.html

http://qt-project.org/doc/qt-4.8/qpainter.html#QPainter-2(第三个链接)

于 2013-02-11T18:35:22.017 回答
1

为了澄清phyatt所说的一点,为了避免该错误,您应该在代码中添加:

painter2->end();

画完线后。
我还没有测试过,但我认为添加那行代码会对你有所帮助。

于 2016-04-18T19:12:37.697 回答