2012-08-06 26 views
1

我有一個圖形場景和視圖,然後我添加一個單一的元素。但不管我給出的x/y座標如何,它總是出現在圖形視圖的中心。爲什麼第一個添加的項目總是出現在Qt的圖形場景/視圖的中心?

爲什麼會發生這種情況,我怎麼可以讓它出現在,比方說,左上角?

這是我的代碼:

scene = new QGraphicsScene(this); 
ui->graphicsView->setScene(scene); 
QGraphicsEllipseItem *ellipseItem = scene->addEllipse(150, 150, 10, 10); 

回答

1

原因是默認情況下,QGraphicsScene通過將所有項目矩形相加在一起來計算其sceneRect。當您添加第一個項目時,它會自動將其用作場景矩形。並且默認QGraphicsView比例和場景矩形中心。

如果你知道最終或所需的場景矩形,設置你添加任何項目之前:

scene->setSceneRect(0, 0, 800, 600); 
scene->addEllipse(150, 150, 10, 10); 
1

你可能要定義一個由的QGraphicsView所示的場景矩形。我認爲默認視圖只顯示了當前場景的居中邊界矩形,它只是你的橢圓。您可以使用QGraphicsView :: fitInView來定義要顯式顯示的區域。

+0

謝謝,我試了一下,但fitInView似乎也擴展了現場,我能避免縮放? – sashoalm 2012-08-06 09:51:00

+0

設置視圖矩形時,可以簡單地使用控件的寬度和高度。此外,應該有一個受保護的「調整大小」方法,即使您的小部件的佈局更改,也可以重寫以維護視圖。 – pwuertz 2012-08-06 09:57:25

相關問題