如何将QGraphicsView锚定到场景中的特殊点?
我希望视图的中心锚定到场景点(0,0).
但正如在文件中所说:
如果整个场景在视图中可见(即,没有可见的滚动条),则视图的对齐将决定场景在视图中的呈现位置.
如果我将设置设置为Qt :: AlignCenter 视图将固定到场景中心.
它可能吗?
我需要像QGraphicsView :: centerOn这样的东西,它始终将点放在视图中心.
您可以通过定义("强制")其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)
这应该可以解决问题.
| 归档时间: |
|
| 查看次数: |
7366 次 |
| 最近记录: |