Как привязать QGraphicsView к специальной точке на сцене? - PullRequest
1 голос
/ 26 октября 2010

Как привязать QGraphicsView к специальной точке на сцене?

Я хочу, чтобы центр вида был привязан к точке сцены (0,0).

Но, как сказано в документации:

Если вся сцена видна в вид, (т.е. нет видимых полосы прокрутки,) выравнивание вида решит, где будет сцена отображается в виде.

И если я установлю agnment в Qt :: AlignCenter представление станет привязанным к сцене в центре.

Возможно ли это сделать?

Мне нужно что-то вроде QGraphicsView :: centerOn, которое всегда помещает точку в центр обзора.

Ответы [ 2 ]

7 голосов
/ 22 июня 2012

Вы можете привязать QGraphicsView в определенной позиции, определив ("принудительно") его свойство sceneRect , отличное от значения по умолчанию (то есть ограничивающего прямоугольника QGraphicsScene).

http://qt -project.org / док / кварта-4,8 / qgraphicsview.html # sceneRect-проп

Вот пример кода. представление центрируется в точке (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!

Это должно сработать.

0 голосов
/ 26 октября 2010

Для этого можно установить alignment property.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...