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