这是主程序的小例子:
void Widget::paintEvent(QPaintEvent *){
QPainter *painter1 = new QPainter(this);
QPainter *painter2 = new QPainter(this);
delete painter1;
painter2->drawLine(50,50,200,100);
}
崩溃了。如果删除最后一行,我会收到以下警告消息:
QPaintDevice:无法销毁正在绘制的绘图设备
答案 0 :(得分: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(第三个链接)
答案 1 :(得分:1)
为了澄清 phyatt 所说的一点,为了避免这个错误你应该添加到你的代码中:
painter2->end();
绘制线后。
我还没有测试过,但我认为添加这行代码可以帮助你。