QGraphicsTransform Class
La classe `QGraphicsTransform` est une classe de base abstraite permettant de créer des transformations avancées sur des `QGraphicsItem`. En savoir plus...
| En-tête : | #include <QGraphicsTransform> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake : | QT += widgets |
| Hérite de : | QObject |
| Hérité par : |
Fonctions publiques
| QGraphicsTransform(QObject *parent = nullptr) | |
| virtual | ~QGraphicsTransform() |
| virtual void | applyTo(QMatrix4x4 *matrix) const = 0 |
Slots protégés
| void | update() |
Description détaillée
En alternative à QGraphicsItem::transform, QGraphicsTransform vous permet de créer et de contrôler des transformations avancées pouvant être configurées indépendamment à l’aide de propriétés spécialisées.
QGraphicsItem permet d’assigner un nombre illimité d’instances de QGraphicsTransform à une seule instance d’ QGraphicsItem. Chaque instance de QGraphicsTransform est appliquée dans l’ordre, une à la fois, à l’ QGraphicsItem auquel elle est assignée.
QGraphicsTransform est particulièrement utile pour les animations. Alors que la méthode QGraphicsItem::setTransform() vous permet d’attribuer n’importe quelle transformation directement à un élément, il n’existe aucun moyen direct d’interpoler entre deux transformations différentes (par exemple, lors d’une transition entre deux états, pour chacun desquels l’élément se voit attribuer une transformation arbitraire différente). En utilisant QGraphicsTransform, vous pouvez interpoler les valeurs des propriétés de chaque transformation indépendante. L’opération qui en résulte est ensuite combinée en une seule transformation qui est appliquée à l’ QGraphicsItem.
Les transformations sont calculées dans un véritable espace 3D à l’aide de ` QMatrix4x4`. Lorsque la transformation est appliquée à un ` QGraphicsItem`, elle est projetée en 2D sur une ` QTransform`. Lorsque plusieurs objets `QGraphicsTransform` sont appliqués à un ` QGraphicsItem`, toutes les transformations sont calculées dans un véritable espace 3D, la projection en 2D n’ayant lieu qu’après l’application du dernier `QGraphicsTransform`. La seule exception à cette règle est ` QGraphicsRotation`, qui effectue une projection en 2D après chaque rotation afin de 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 de l’une des sous-classes existantes) et réimplémenter la fonction virtuelle pure ` applyTo()`, qui prend un pointeur vers un ` 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 en conséquence.
QGraphicsTransform peut être utilisé conjointement avec les méthodes QGraphicsItem::setTransform(), QGraphicsItem::setRotation() et QGraphicsItem::setScale().
Voir également QGraphicsItem::transform(), QGraphicsScale et QGraphicsRotation.
Documentation sur les fonctions membres
QGraphicsTransform::QGraphicsTransform(QObject *parent = nullptr)
Crée un nouvel objet `QGraphicsTransform` avec l'parent` spécifiée.
[virtual noexcept] QGraphicsTransform::~QGraphicsTransform()
Supprime la transformation graphique.
[pure virtual] void QGraphicsTransform::applyTo(QMatrix4x4 *matrix) const
Cette méthode purement virtuelle 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()
Indique que cette opération de transformation a modifié ses paramètres de telle sorte que la fonction applyTo() renverra un résultat différent de celui obtenu précédemment.
Lorsque vous implémentez votre propre transformation graphique personnalisée, vous devez appeler cette fonction chaque fois que vous modifiez un paramètre, afin d'indiquer à ` QGraphicsItem ` que sa transformation doit être mise à jour.
Voir également 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.