2010-10-26 77 views
1

如何將QGraphicsView定位到場景上的特殊點?如何將QGraphicsView錨定到場景上的特殊點?

我想要一個視圖的中心錨固到場景點(0,0)。

但隨着docummentation說:

如果整個場景是在 視圖中可以看到,(即,沒有可見的 滾動條)視圖的對齊 將決定在何處場面會在視圖中呈現的 。

如果我設置agn​​ment Qt的:: AlignCenter 視圖成爲固定在現場中心。

是否可行?

我需要類似QGraphicsView :: centerOn的東西,它始終將視點置於視圖中心。

回答

-1

您可以設置alignment property來實現此目的。

+0

使用AlignmentCenter,整個場景將在視圖中居中。但不是特別的一點。 – graphite 2010-10-26 10:59:18

+0

當你談論特殊點時,你是在談論場景中的QGraphicsItem點?就我而言,視圖不可能管理場景中的對象。 – 2010-10-26 13:39:00

+0

嘗試使用setVerticalScrollBarPolicy(Qt :: ScrollBarAlwaysOff)關閉滾動條,水平方向也一樣。如果仍有問題,請嘗試確保場景始終大於視圖區域。 – 2010-10-26 15:58:47

6

您可以通過定義(「強制」)其sceneRect屬性,除了默認的(即QGraphicsScene邊界矩形)在特定位置的的QGraphicsView。

http://qt-project.org/doc/qt-4.8/qgraphicsview.html#sceneRect-prop

下面是一個代碼的例子。 視圖以點(0,0)爲中心,不包括邊界矩形場景或centerOn函數。

#include <QGraphicsView> 
#include <QGraphicsScene> 
#include <QGraphicsRectItem> 
#include <QGraphicsEllipseItem> 
#include <QDebug> 

//... 

QGraphicsScene scene; 
QGraphicsView view(&scene); 

QRect viewRect(-100, -100, 200, 200); 
view.setSceneRect(viewRect); 
qDebug() << viewRect.center(); //QPointF(0,0) 

scene.addEllipse(-5,-5,10,10); 
qDebug() << scene.sceneRect(); //QRectF(-5,-5 10x10) 
scene.addRect(QRectF(0, 0, 200, 200)); 
qDebug() << scene.sceneRect(); //QRectF(-5,-5 205x205) 

view.show(); 

view.centerOn(QPointF(50, 50)); //nothing happens! 

這應該是訣竅。

相關問題