[SOLVED] QGraphicsView and scale

  • Graphics view has function scale(qreal,qreal) which scales objects inside it. How to get scale factor of my view ? I found that I cam get transformation matrix using transformation() function, but how can I get factor value using this or maybe other ideas ?

  • QTransform is returned by the QGraphicsView::transform(). Please take a look at QTransform class information, you can find there the description of basic matrix operations and this is what you are looking for.

  • I mean can I get scaleFactor from this transformation matrix and if yes - how ? I don't need to do any transform operations on this step, I just need to get current scale factor.

  • Yes, you can. The elements m11 and m22 in the matrix operations.

  • Sorry I found that it's m11 and m22. Thanks,dakron.

  • Please mark post as [SOLVED]

  • I know this topic is quite old, but I want to update the solution. I used the solution from dakron but got weird behavior sometimes.
    m11 for x and m22 for y works only if the view has no rotation applied. If the view is rotated the returned values will be wrong.
    You can calculate the x scale with 'sqrt(trf.m11() * trf.m11() + trf.m12() * trf.m12())' (pythagoras, where trf is the QTransform) and y with 'sqrt(trf.m21() * trf.m21() + trf.m22() * trf.m22())'.

Log in to reply