在paintEvent中创建两个QPainter

Creating two QPainters in paintEvent

本文关键字:两个 QPainter paintEvent 创建      更新时间:2023-10-16

这是主程序的小例子:

void Widget::paintEvent(QPaintEvent *){
    QPainter *painter1 = new QPainter(this);
    QPainter *painter2 = new QPainter(this);
    delete painter1;
    painter2->drawLine(50,50,200,100);     
}

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

QPaintDevice:无法破坏正在喷涂的油漆设备

QPainter对象与QPaintDevice相关联。在下面第三个链接的注释中,它谈到了QWidget::paintEvent()上下文中QPainter对象的生命。

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(第三个链接)

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

painter2->end();

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