如何将QGraphicsView锚定到场景中的特殊点?

gra*_*ite 1 qt qt4

如何将QGraphicsView锚定到场景中的特殊点?

我希望视图的中心锚定到场景点(0,0).

但正如在文件中所说:

如果整个场景在视图中可见(即,没有可见的滚动条),则视图的对齐将决定场景在视图中的呈现位置.

如果我将设置设置为Qt :: AlignCenter 视图将固定到场景中心.

它可能吗?

我需要像QGraphicsView :: centerOn这样的东西,它始终将点放在视图中心.

Gab*_*bel 7

您可以通过定义("强制")其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!
Run Code Online (Sandbox Code Playgroud)

这应该可以解决问题.