Qt - Използвайки QTransform (или подобен), мащабирайте вътрешния QRect към/от QGraphics

Някакъв фон - Да кажем, че имате QGraphicsScene и само един изглед, който е скала 1-1 със сцената. Имате QRect A, който представлява външен изглед на сцената с предварително определен размер на пиксела. Имате QRect A1, който е по-малък правоъгълник вътре в A.

Как да преобразувате A1 в сцената, така че да бъде мащабиран правилно (т.е. ако е 1/4 от правоъгълник A, той ще заема 1/4 от сцената), и след това да отмените тази трансформация, за да мащабирате правоъгълник, създаден в сцената да пасне правилно в прав A?

Мога да направя цялата тази груба сила, но се чудя дали има начин да използвам вградените класове на Qt...


person jaunty_jonathan    schedule 16.05.2014    source източник


Отговори (1)


След като разгледах някои примери, за да се опитам да намеря подобни приложения, осъзнах, че напълно пропускам смисъла - мога просто да настроя A/A1 директно на сцената и да мащабирам изгледа (чрез напълно очевидното но по някакъв начин напълно пренебрегван досега QGraphicsView::fitInView(..)), за да пасне на правоъгълниците вътре. Не са необходими правоъгълни трансформации. Тотален момент. :)

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

TL;DR - Използвайте fitInView()

person jaunty_jonathan    schedule 16.05.2014
comment
Благодаря за бакшиша ! Това ме подлудяваше - person Florin; 21.03.2016