您可以锚通过定义(“强制”)其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