QGraphicsTransform Class
La clase QGraphicsTransform es una clase base abstracta para construir transformaciones avanzadas sobre QGraphicsItems. Más...
| Cabecera: | #include <QGraphicsTransform> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets)target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Hereda: | QObject |
| Heredado por: |
Funciones Públicas
| QGraphicsTransform(QObject *parent = nullptr) | |
| virtual | ~QGraphicsTransform() |
| virtual void | applyTo(QMatrix4x4 *matrix) const = 0 |
Ranuras protegidas
| void | update() |
Descripción Detallada
Como alternativa a QGraphicsItem::transform, QGraphicsTransform te permite crear y controlar transformaciones avanzadas que pueden ser configuradas independientemente usando propiedades especializadas.
QGraphicsItem permite asignar cualquier número de instancias QGraphicsTransform a un QGraphicsItem. Cada QGraphicsTransform se aplica en orden, de una en una, a la QGraphicsItem a la que está asignada.
QGraphicsTransform es particularmente útil para animaciones. Mientras que QGraphicsItem::setTransform() te permite asignar cualquier transformación directamente a un ítem, no existe una forma directa de interpolar entre dos transformaciones diferentes (por ejemplo, al transicionar entre dos estados, cada uno para el cual el ítem tiene asignada una transformación arbitraria diferente). Usando QGraphicsTransform puedes interpolar los valores de las propiedades de cada transformación independiente. La operación resultante se combina en una única transformación que se aplica a QGraphicsItem.
Las transformaciones se calculan en el espacio 3D real utilizando QMatrix4x4. Cuando la transformación se aplica a QGraphicsItem, se proyectará de nuevo a un espacio 2D QTransform. Cuando se aplican varios objetos QGraphicsTransform a QGraphicsItem, todas las transformaciones se calculan en el espacio 3D real, y la proyección a 2D sólo se produce después de aplicar la última QGraphicsTransform. La excepción a esto es QGraphicsRotation, que se proyecta de nuevo a 2D después de cada rotación para preservar el efecto de perspectiva alrededor de los ejes X e Y.
Si quieres crear tu propia transformación configurable, puedes crear una subclase de QGraphicsTransform (o cualquiera de las subclases existentes), y reimplementar la función virtual pura applyTo(), que toma un puntero a QMatrix4x4. Cada operación que quieras aplicar debe ser expuesta como propiedades (por ejemplo, customTransform->setVerticalShear(2.5)). Dentro de tu reimplementación de applyTo(), puedes modificar el transform proporcionado respectivamente.
QGraphicsTransform puede usarse junto con QGraphicsItem::setTransform(), QGraphicsItem::setRotation(), y QGraphicsItem::setScale().
Ver también QGraphicsItem::transform(), QGraphicsScale, y QGraphicsRotation.
Documentación de las funciones miembro
QGraphicsTransform::QGraphicsTransform(QObject *parent = nullptr)
Construye una nueva QGraphicsTransform con la dirección parent.
[virtual noexcept] QGraphicsTransform::~QGraphicsTransform()
Destruye la transformación gráfica.
[pure virtual] void QGraphicsTransform::applyTo(QMatrix4x4 *matrix) const
Este método virtual puro debe reimplementarse en las clases derivadas.
Aplica esta transformación a matrix.
Véase también QGraphicsItem::transform() y QMatrix4x4::toTransform().
[protected slot] void QGraphicsTransform::update()
Notifica que esta operación de transformación ha cambiado sus parámetros de tal forma que applyTo() devolverá un resultado diferente al anterior.
Cuando implementes tu propia transformación gráfica personalizada, debes llamar a esta función cada vez que cambies un parámetro, para hacer saber a QGraphicsItem que su transformación necesita ser actualizada.
Véase también 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.