2012-03-11 72 views
0

我正在使用QGraphicsView/QGraphicsScene來顯示圖像。圖像始終顯示爲其原始大小,並在兩端顯示滾動條。我希望QGraphicsView根據窗口保持縱橫比的大小自動調整圖像。 我試過,但什麼都沒有發生:如何在QGraphicsView/QGraphicsScene中查看像素圖而不改變縱橫比

ui->graphicsView->fitInView(0,0,ui->graphicsView->width(),ui->graphicsView->height(),Qt::KeepAspectRatio); 
+0

你在哪裏叫這個方法? (在構造函數中,某些幾何數據無效。)Qt文檔建議在'resizeEvent'中使用它。如果你用常量調用它,它會起作用嗎? ('fitInView(0,0,100,100,Qt :: KeepAspectRatio);') – sgibb 2012-03-11 11:26:44

+0

是的,我在構造函數中調用它(至少它應該工作一次),我也嘗試了常量值,但沒有效果 – 2012-03-11 11:53:57

回答

11

您提供的視圖的矩形,不是現場的。

這應該工作:

ui->graphicsView->fitInView(scene->itemsBoundingRect() ,Qt::KeepAspectRatio); 

itemsBoundingRect計算並返回現場的所有項目的邊界矩形。所以graphicsview的視圖矩陣將被縮放以適應場景的內容。

我建議你重新實現resizeEvent並且在那裏也有這個調用。