2013-12-08 50 views
0

我對Qt的記憶模型並不熟悉,特別是在圖像處理方面。我創建了一個空白的像素圖並將其添加到QGraphicsView的場景中。這似乎正確地跳轉兩種尺寸之間的工作,但我注意到,如果我打開QFileDialog(beforeafter),我會得到調用此函數的圖形工件。這些工件是在實際的視圖中,因爲我可以平移並保持現狀。 QFileDialog彈出窗口在屏幕上似乎並不重要,但我仍然遇到這些問題。QGraphicsView在打開文件對話框後顯示文物

有什麼我需要做的手動重新渲染的那部分圖像或者我可能在代碼中的其他地方有更嚴重的問題?

QImage構造
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); 
} 

回答

0

文件說

警告:這將創建一個與QImage的未初始化的數據。調用 fill()以使用QPainter在 之前用適當的像素值填充圖像。

所以我建議在pixmap做任何事之前增加一個image.fill(0)