Sur cette page

QGraphicsTransform Class

La classe QGraphicsTransform est une classe de base abstraite permettant de créer des transformations avancées sur les QGraphicsItems. Plus d'informations...

En-tête : #include <QGraphicsTransform>
CMake : find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake : QT += widgets
Hérite : QObject
Héritée par :

QGraphicsRotation et QGraphicsScale

Fonctions publiques

QGraphicsTransform(QObject *parent = nullptr)
virtual ~QGraphicsTransform()
virtual void applyTo(QMatrix4x4 *matrix) const = 0

Emplacements protégés

void update()

Description détaillée

En tant qu'alternative à QGraphicsItem::transform, QGraphicsTransform vous permet de créer et de contrôler des transformations avancées qui peuvent être configurées indépendamment à l'aide de propriétés spécialisées.

QGraphicsItem QGraphicsTransform vous permet d'assigner un nombre quelconque d'instances de QGraphicsTransform à un site QGraphicsItem. Chaque QGraphicsTransform est appliqué dans l'ordre, un par un, au site QGraphicsItem auquel il est affecté.

QGraphicsTransform est particulièrement utile pour les animations. Alors que QGraphicsItem::setTransform() vous permet d'affecter n'importe quelle transformation directement à un élément, il n'existe aucun moyen direct d'interpoler entre deux transformations différentes (par exemple, lors de la transition entre deux états, chacun pour lequel une transformation arbitraire différente a été affectée à l'élément). QGraphicsTransform permet d'interpoler les valeurs des propriétés de chaque transformation indépendante. L'opération résultante est alors combinée en une seule transformation qui est appliquée à QGraphicsItem.

Les transformations sont calculées dans un véritable espace 3D à l'aide de QMatrix4x4. Lorsque la transformation est appliquée à un site QGraphicsItem, elle est projetée vers un site QTransform en 2D. Lorsque plusieurs objets QGraphicsTransform sont appliqués à un site QGraphicsItem, toutes les transformations sont calculées dans un véritable espace 3D, la projection en 2D ne se produisant qu'après l'application de la dernière QGraphicsTransform. L'exception à cette règle est QGraphicsRotation, qui se projette en 2D après chaque rotation pour préserver l'effet de perspective autour des axes X et Y.

Si vous souhaitez créer votre propre transformation configurable, vous pouvez créer une sous-classe de QGraphicsTransform (ou l'une des sous-classes existantes) et réimplémenter la fonction purement virtuelle applyTo(), qui prend un pointeur sur QMatrix4x4. Chaque opération que vous souhaitez appliquer doit être exposée sous forme de propriétés (par exemple, customTransform->setVerticalShear(2.5)). Dans votre réimplémentation de applyTo(), vous pouvez modifier la transformation fournie respectivement.

QGraphicsTransform peut être utilisé avec QGraphicsItem::setTransform(), QGraphicsItem::setRotation(), et QGraphicsItem::setScale().

Voir également QGraphicsItem::transform(), QGraphicsScale, et QGraphicsRotation.

Documentation des fonctions membres

QGraphicsTransform::QGraphicsTransform(QObject *parent = nullptr)

Construit une nouvelle QGraphicsTransform avec l'adresse parent.

[virtual noexcept] QGraphicsTransform::~QGraphicsTransform()

Détruit la transformation graphique.

[pure virtual] void QGraphicsTransform::applyTo(QMatrix4x4 *matrix) const

Cette méthode virtuelle pure doit être réimplémentée dans les classes dérivées.

Elle applique cette transformation à matrix.

Voir également QGraphicsItem::transform() et QMatrix4x4::toTransform().

[protected slot] void QGraphicsTransform::update()

Notifie que cette opération de transformation a modifié ses paramètres de telle sorte que applyTo() renvoie un résultat différent de celui d'avant.

Lorsque vous implémentez votre propre transformation graphique personnalisée, vous devez appeler cette fonction chaque fois que vous modifiez un paramètre, afin de faire savoir à QGraphicsItem que sa transformation doit être mise à jour.

Voir aussi applyTo().

© 2026 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.