В моем проекте виджетов 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
находится рядом с границей сцены, так что границы прямоугольника текущей сцены будут превышены, представление может не перемещаться в «недопустимую» область, но разрешено только отображать области внутри сцены (поэтому необходимо ограничить запрашиваемую позицию).
Какой самый эффективный способ добиться этого?