在使用QGraphicsView打開圖片的過程當中,發現若是圖片大小大於view大小時,圖片沒法徹底顯示,且view周邊不出現滾動條,致使沒法查看圖片全貌,相關代碼以下:this
QGraphicsScene *scene = new QGraphicsScene(this); QGraphicsView *graphicsView = new QGraphicsView(); graphicsView->setScene(scene); scene->setSceneRect(-200,-200,400,400); graphicsView->setMinimumSize(400,400);
圖片顯示以下:.net
上圖左側,是view區域,其中顯示的圖片只是我打開圖片的一部分,且周圍沒有滾動條,沒法查看圖片全貌。code
QGraphicsScene是QGraphicsView的邏輯空間,QGraphicsView只是用來顯示QGraphicsScene中部分或所有內容的顯示控件,至關於它的窗口。由上面的代碼看出,我把scene的大小已經固定了。 當圖片的大小大於scene的大小時,那麼scene只能放下圖片的一部分,因此不管view怎麼變,它所能顯示的始終只是scene中的內容,因此它沒法顯示圖片的全貌。但錯不在它,而在於scene。圖片
既然scene是萬惡之源,那就改變scene的大小。經過在每次打開一張圖片時根據圖片大小動態設定scene的大小,問題就得以解決。相關代碼以下:it
QGraphicsScene *scene = new QGraphicsScene(this); QGraphicsView *graphicsView = new QGraphicsView(); graphicsView->setScene(scene); QPixmap pix(); ...//此處省略代碼爲打開一張圖片的代碼 scene->setSceneRect(-pix.width() / 2,-pix.height() / 2,pix.width(),pix.height());//根據圖片大小動態設定scene大小 graphicsView->setMinimumSize(400,400);map
這時圖片顯示以下: ![輸入圖片說明](https://static.oschina.net/uploads/img/201610/03130528_UnB7.png "在這裏輸入圖片標題") 能夠看到,較大圖片顯示時,view周圍出現了滾動條,能夠經過滾動條查看圖片全貌。 那麼打開一張小圖片會怎麼樣呢? ![輸入圖片說明](https://static.oschina.net/uploads/img/201610/03130647_tuTV.png "在這裏輸入圖片標題") 能夠看到,顯示正常,同時view周圍也沒出現滾動條。 問題解決!