2014-04-17 38 views
1

我需要QGraphicsView來顯示由其左上角座標給出的場景的一部分,並且該場景點必須位於視圖的對應角落中。如何在QGraphicsView的角落顯示QGraphicsScene中的某個點?

但是我還沒有找到合適的功能來開箱即用。我怎樣才能做到這一點?

+1

你有沒有試過QGraphicsView :: setSceneRect? – tomvodi

+0

設置場景矩形會起作用,但不會讓我在此之後進行滾動。在sceneview顯示有趣的部分後,我需要能夠滾動。 – Srv19

回答

3

默認情況下,視圖顯示場景居中。這可以防止它的精確定位,所以你應該改變看法的對齊方式:

view->setAlignMent(Qt::AlignLeft | Qt::AlignTop); 

當你想要一些point(在場景座標)中顯示,你需要將其轉換爲視口座標:

QPoint viewport_point = view->mapFromScene(point); 

現在,您需要設置滾動條的相應值:

view->horizontalScrollBar()->setValue(viewport_point.x()); 
view->verticalScrollBar()->setValue(viewport_point.y()); 

應該這樣做。請注意,視圖中的滾動有限制。例如,您不能將場景的右邊緣放到視口的左邊緣。你可以使視圖的大sceneRect克服。

QGraphicsView::ensureVisible方法也可能有幫助,雖然它不完全按照你的要求。

相關問題