1
我需要QGraphicsView
來顯示由其左上角座標給出的場景的一部分,並且該場景點必須位於視圖的對應角落中。如何在QGraphicsView的角落顯示QGraphicsScene中的某個點?
但是我還沒有找到合適的功能來開箱即用。我怎樣才能做到這一點?
我需要QGraphicsView
來顯示由其左上角座標給出的場景的一部分,並且該場景點必須位於視圖的對應角落中。如何在QGraphicsView的角落顯示QGraphicsScene中的某個點?
但是我還沒有找到合適的功能來開箱即用。我怎樣才能做到這一點?
默認情況下,視圖顯示場景居中。這可以防止它的精確定位,所以你應該改變看法的對齊方式:
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
方法也可能有幫助,雖然它不完全按照你的要求。
你有沒有試過QGraphicsView :: setSceneRect? – tomvodi
設置場景矩形會起作用,但不會讓我在此之後進行滾動。在sceneview顯示有趣的部分後,我需要能夠滾動。 – Srv19