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()

Другие вопросы по тегам