Qt — Используя QTransform (или аналогичный), масштабируйте внутренний QRect в / из QGraphics

Некоторый фон —
Скажем, у вас есть QGraphicsScene и только один вид, который составляет 1-1 в масштабе сцены.
У вас есть QRect A, который представляет внешний вид сцены с предопределенным размером пикселя.
У вас есть QRect A1, который является меньшим прямоугольником внутри A.

Как вы переводите A1 в сцену так, чтобы он масштабировался правильно (т. Е. Если это 1/4 прямоугольника A, он будет занимать 1/4 сцены), а затем отмените это преобразование для масштабирования прямоугольника, созданного в сцене правильно вписаться в прямоугольник А?

Я могу сделать всю эту грубую силу, но мне интересно, есть ли способ использовать встроенные в Qt классы …

1

Решение

Посмотрев несколько примеров, чтобы попытаться найти аналогичное применение, я понял, что полностью упускаю суть — я могу просто установить A / A1 непосредственно на сцену и масштабировать Посмотреть (через совершенно очевидный, но до сих пор каким-то образом упускаемый из виду QGraphicsView :: fitInView (..)), чтобы соответствовать внутренним элементам. Никаких прямоугольных преобразований не требуется. Общий момент «Дух». 🙂

Мне нужно будет трансформировать щелчки мыши и точки в представлении при взаимодействии с ним, но есть целый хороший набор mapTo * mapFrom *, который прекрасно с этим справится.

TL; DR — использовать fitInView ()

1

Другие решения


По вопросам рекламы [email protected]