QGraphicsTransform¶
The
QGraphicsTransform
class is an abstract base class for building advanced transformations on QGraphicsItems. More…
Inherited by: QGraphicsRotation, QGraphicsScale
New in version 4.6.
Detailed Description¶
As an alternative to
transform
,QGraphicsTransform
lets you create and control advanced transformations that can be configured independently using specialized properties.
QGraphicsItem
allows you to assign any number ofQGraphicsTransform
instances to oneQGraphicsItem
. EachQGraphicsTransform
is applied in order, one at a time, to theQGraphicsItem
it’s assigned to.
QGraphicsTransform
is particularly useful for animations. WhereassetTransform()
lets you assign any transform directly to an item, there is no direct way to interpolate between two different transformations (e.g., when transitioning between two states, each for which the item has a different arbitrary transform assigned). UsingQGraphicsTransform
you can interpolate the property values of each independent transformation. The resulting operation is then combined into a single transform which is applied toQGraphicsItem
.Transformations are computed in true 3D space using
QMatrix4x4
. When the transformation is applied to aQGraphicsItem
, it will be projected back to a 2DQTransform
. When multipleQGraphicsTransform
objects are applied to aQGraphicsItem
, all of the transformations are computed in true 3D space, with the projection back to 2D only occurring after the lastQGraphicsTransform
is applied. The exception to this isQGraphicsRotation
, which projects back to 2D after each rotation to preserve the perspective effect around the X and Y axes.If you want to create your own configurable transformation, you can create a subclass of
QGraphicsTransform
(or any or the existing subclasses), and reimplement the pure virtualapplyTo()
function, which takes a pointer to aQMatrix4x4
. Each operation you would like to apply should be exposed as properties (e.g., customTransform->setVerticalShear(2.5)). Inside you reimplementation ofapplyTo()
, you can modify the provided transform respectively.
QGraphicsTransform
can be used together withsetTransform()
,setRotation()
, andsetScale()
.See also
- class PySide2.QtWidgets.QGraphicsTransform([parent=None])¶
- param parent:
Constructs a new
QGraphicsTransform
with the givenparent
.
- PySide2.QtWidgets.QGraphicsTransform.applyTo(matrix)¶
- Parameters:
matrix –
PySide2.QtGui.QMatrix4x4
This pure virtual method has to be reimplemented in derived classes.
It applies this transformation to
matrix
.See also
transform()
toTransform()
- PySide2.QtWidgets.QGraphicsTransform.update()¶
Notifies that this transform operation has changed its parameters in such a way that
applyTo()
will return a different result than before.When implementing you own custom graphics transform, you must call this function every time you change a parameter, to let
QGraphicsItem
know that its transformation needs to be updated.See also
© 2022 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.