您可以錨通過定義(「強制」)其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!
這應該是訣竅。
使用AlignmentCenter,整個場景將在視圖中居中。但不是特別的一點。 – graphite 2010-10-26 10:59:18
當你談論特殊點時,你是在談論場景中的QGraphicsItem點?就我而言,視圖不可能管理場景中的對象。 – 2010-10-26 13:39:00
嘗試使用setVerticalScrollBarPolicy(Qt :: ScrollBarAlwaysOff)關閉滾動條,水平方向也一樣。如果仍有問題,請嘗試確保場景始終大於視圖區域。 – 2010-10-26 15:58:47