QGraphicsTransform Class

Die Klasse QGraphicsTransform ist eine abstrakte Basisklasse zur Erstellung von erweiterten Transformationen auf QGraphicsItems. Mehr...

Kopfzeile: #include <QGraphicsTransform>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Vererbt: QObject
Vererbt von:

QGraphicsRotation und QGraphicsScale

Öffentliche Funktionen

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

Geschützte Steckplätze

void update()

Detaillierte Beschreibung

Als Alternative zu QGraphicsItem::transform können Sie mit QGraphicsTransform erweiterte Transformationen erstellen und steuern, die unabhängig voneinander mit speziellen Eigenschaften konfiguriert werden können.

QGraphicsItem QGraphicsTransform ermöglicht es Ihnen, eine beliebige Anzahl von QGraphicsTransform-Instanzen einem QGraphicsItem zuzuordnen. Jede QGraphicsTransform wird der Reihe nach, eine nach der anderen, auf die QGraphicsItem angewendet, der sie zugewiesen ist.

QGraphicsTransform ist besonders nützlich für Animationen. Während man mit QGraphicsItem::setTransform() einem Element eine beliebige Transformation direkt zuweisen kann, gibt es keine direkte Möglichkeit, zwischen zwei verschiedenen Transformationen zu interpolieren (z.B. beim Übergang zwischen zwei Zuständen, für die dem Element jeweils eine andere beliebige Transformation zugewiesen wurde). Mit QGraphicsTransform können Sie die Eigenschaftswerte jeder unabhängigen Transformation interpolieren. Die resultierende Operation wird dann zu einer einzigen Transformation kombiniert, die auf QGraphicsItem angewendet wird.

Transformationen werden im echten 3D-Raum mit QMatrix4x4 berechnet. Wenn die Transformation auf eine QGraphicsItem angewendet wird, wird sie auf eine 2D QTransform zurückprojiziert. Wenn mehrere QGraphicsTransform-Objekte auf ein QGraphicsItem angewendet werden, werden alle Transformationen im echten 3D-Raum berechnet, wobei die Rückprojektion auf 2D erst nach der Anwendung der letzten QGraphicsTransform erfolgt. Die Ausnahme ist QGraphicsRotation, die nach jeder Drehung zurück in den 2D-Raum projiziert, um den perspektivischen Effekt um die X- und Y-Achse zu erhalten.

Wenn Sie Ihre eigene konfigurierbare Transformation erstellen möchten, können Sie eine Unterklasse von QGraphicsTransform (oder eine der vorhandenen Unterklassen) erstellen und die rein virtuelle Funktion applyTo() neu implementieren, die einen Zeiger auf QMatrix4x4 annimmt. Jede Operation, die Sie anwenden möchten, sollte als Eigenschaft angegeben werden (z. B. customTransform->setVerticalShear(2.5)). In Ihrer Reimplementierung von applyTo() können Sie die bereitgestellte Transformation entsprechend ändern.

QGraphicsTransform kann zusammen mit QGraphicsItem::setTransform(), QGraphicsItem::setRotation(), und QGraphicsItem::setScale() verwendet werden.

Siehe auch QGraphicsItem::transform(), QGraphicsScale, und QGraphicsRotation.

Dokumentation der Mitgliedsfunktionen

QGraphicsTransform::QGraphicsTransform(QObject *parent = nullptr)

Konstruiert eine neue QGraphicsTransform mit der angegebenen parent.

[virtual noexcept] QGraphicsTransform::~QGraphicsTransform()

Zerstört die Grafiktransformation.

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

Diese rein virtuelle Methode muss in abgeleiteten Klassen reimplementiert werden.

Sie wendet diese Transformation auf matrix an.

Siehe auch QGraphicsItem::transform() und QMatrix4x4::toTransform().

[protected slot] void QGraphicsTransform::update()

Informiert darüber, dass diese Transformationsoperation ihre Parameter so geändert hat, dass applyTo() ein anderes Ergebnis als zuvor liefert.

Wenn Sie Ihre eigene benutzerdefinierte Grafiktransformation implementieren, müssen Sie diese Funktion jedes Mal aufrufen, wenn Sie einen Parameter ändern, um QGraphicsItem mitzuteilen, dass die Transformation aktualisiert werden muss.

Siehe auch applyTo().

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