Qt QGraphicsView在打开文件对话框后显示工件

Qt QGraphicsView在打开文件对话框后显示工件,qt,qgraphicsview,qimage,qpixmap,Qt,Qgraphicsview,Qimage,Qpixmap,我对Qt的记忆模型不太熟悉,尤其是在图像处理方面。我创建了一个空白的pixmap并将其添加到QGraphicsView的场景中。这似乎可以在两种大小之间正常工作,但我注意到,如果我打开QFileDialog(和),就会有图形工件调用此函数。这些工件在实际视图中,因为我可以四处平移,它们仍然存在。屏幕上QFileDialog在哪里弹出似乎并不重要,我仍然会遇到这些问题 我需要做些什么来手动重新渲染图像的这一部分,或者我在代码的其他地方可能有更严重的问题吗 void RenderView::setV

我对Qt的记忆模型不太熟悉,尤其是在图像处理方面。我创建了一个空白的pixmap并将其添加到QGraphicsView的场景中。这似乎可以在两种大小之间正常工作,但我注意到,如果我打开QFileDialog(和),就会有图形工件调用此函数。这些工件在实际视图中,因为我可以四处平移,它们仍然存在。屏幕上QFileDialog在哪里弹出似乎并不重要,我仍然会遇到这些问题

我需要做些什么来手动重新渲染图像的这一部分,或者我在代码的其他地方可能有更严重的问题吗

void RenderView::setViewport(int width, int height)
{
    if (_viewportOverlay != 0)
        scene()->removeItem(_viewportOverlay);

    const int BORDER = VIEWPORT_BORDER;
    QImage image(width+BORDER*2,height+BORDER*2, QImage::Format_ARGB32);
    QPixmap pixmap = QPixmap::fromImage(image);

    _viewportOverlay = scene()->addPixmap(pixmap);
}

QImage
构造函数的文档

警告:这将创建具有未初始化数据的QImage。呼叫 fill()在开始之前使用适当的像素值填充图像 使用QPainter在其上绘制

因此,我建议在使用pixmap之前添加一个
图像。填充(0)