Qt добавляет элемент в центр сцены / представления

Привет,

Я пытаюсь добавить QGraphicsItem точно в центр текущего экрана.
Мой QGraphicsScene очень большой (10k X 10K), поэтому QGraphicsView не может показать его полностью, есть полосы прокрутки.

Я не могу найти никакой функции, чтобы вернуть мне прямоугольник моего текущего экрана, я искал во всех функциях QGraphicsScene и QGraphicsView.
Есть функции для возврата прямоугольника сцены (он возвращает прямоугольник 10k X 10k, но это бесполезно) и есть функции для возврата положения мыши, но мне нужно переместить мышь и щелкнуть меню, чтобы мышь больше не была внутри сцены, а элемент был создан за пределами видимого пространства ...

Большое Вам спасибо.


person Cristi Constantin    schedule 07.05.2011    source источник


Ответы (1)


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

Чтобы получить прямоугольник текущего экрана, попробуйте следующее:

QRect exposedRect(graphicsView.mapToScene(0,0).toPoint(), graphicsView.viewport()->rect().size());

Полагаю, отсюда ты с этим справишься.

person zkunov    schedule 07.05.2011
comment
Привет и спасибо за ответ. К сожалению, это не работает. Я пробовал graphicsView.viewport (). Pos () и graphicsView.viewport () - ›rect (). Center (), это то, что мне нужно для размещения моих элементов на сцене, но это не помещает их в центр. Я использую setTransformationAnchor (QGraphicsView.AnchorUnderMouse) и setResizeAnchor (QGraphicsView.AnchorUnderMouse), но я также пробовал AnchorViewCenter, и он по-прежнему не позиционирует их правильно ... - person Cristi Constantin; 09.05.2011
comment
@Cristi Constantin: Вы пробовали graphicsView.mapToScene (graphicsView.viewport () - ›rect (). Center ()), чтобы получить центральную точку текущего экрана, это должно сработать. - person zkunov; 09.05.2011