New in version 4.6.
QGraphicsTransform is particularly useful for animations. Whereas
setTransform() 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). Using
QGraphicsTransform you can interpolate the property values of each independent transformation. The resulting operation is then combined into a single transform which is applied to
Transformations are computed in true 3D space using
QMatrix4x4 . When the transformation is applied to a
QGraphicsItem , it will be projected back to a 2D
QTransform . When multiple
QGraphicsTransform objects are applied to a
QGraphicsItem , all of the transformations are computed in true 3D space, with the projection back to 2D only occurring after the last
QGraphicsTransform is applied. The exception to this is
QGraphicsRotation , 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 virtual
applyTo() function, which takes a pointer to a
QMatrix4x4 . Each operation you would like to apply should be exposed as properties (e.g., customTransform->setVerticalShear(2.5)). Inside you reimplementation of
applyTo() , you can modify the provided transform respectively.
- class PySide6.QtWidgets.QGraphicsTransform([parent=None])#
Constructs a new
QGraphicsTransform with the given
This pure virtual method has to be reimplemented in derived classes.
It applies this transformation to
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.