Установите верхнюю левую позицию QGraphicsView в указанное положение c QGraphicsScene - PullRequest
0 голосов
/ 26 апреля 2020

В моем проекте виджетов Qt 5.12.5 есть QGraphicsScene и QGraphicsView.

Я установил начало системы координат в конструкторе вида в верхнем левом углу:

setAlignment(Qt::AlignTop | Qt::AlignLeft);

Кроме того, следует упомянуть, что я масштабирую представление в различных методах класса с помощью scale().

До сих пор я узнал, что с использованием методов QGraphicView centerOn() и makeVisible() Я могу убедиться, что определенные QGraphicsItem s находятся в видимом прямоугольнике.


К сожалению, эти функции не помогают мне выполнить следующую задачу:

Я хочу добиться установки origin вида ( вверху слева) до указанной c позиции сцены, независимо от текущего коэффициента масштабирования.

Например, когда у меня есть QGraphicsItem в позиции сцены x = 347.0 , у = 446.0 Я хочу установить верхнюю левую позицию видимого прямоугольника представления, чтобы соответствовать этим координатам сцены 347.0 | 446.0.

Однако, если QGraphicsItem находится рядом с границей сцены, так что границы прямоугольника текущей сцены будут превышены, представление может не перемещаться в «недопустимую» область, но разрешено только отображать области внутри сцены (поэтому необходимо ограничить запрашиваемую позицию).


Какой самый эффективный способ добиться этого?

...