Auf dieser Seite

QGraphicsTransform Class

Die Klasse „QGraphicsTransform“ ist eine abstrakte Basisklasse zum Erstellen komplexer Transformationen für „QGraphicsItems“. Mehr...

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

QGraphicsRotation und QGraphicsScale

Öffentliche Funktionen

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

Geschützte Slots

void update()

Ausführliche Beschreibung

Als Alternative zu ` QGraphicsItem::transform` ermöglicht Ihnen `QGraphicsTransform` das Erstellen und Steuern komplexer Transformationen, die mithilfe spezieller Eigenschaften unabhängig voneinander konfiguriert werden können.

QGraphicsItem ermöglicht es Ihnen, einem ` QGraphicsItem` eine beliebige Anzahl von `QGraphicsTransform`-Instanzen zuzuweisen. Jedes `QGraphicsTransform` wird der zugewiesenen ` QGraphicsItem ` der Reihe nach nacheinander angewendet.

QGraphicsTransform ist besonders nützlich für Animationen. Während Sie mit ` QGraphicsItem::setTransform()` eine beliebige Transformation direkt einem Element zuweisen können, 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 ist). Mit QGraphicsTransform können Sie die Eigenschaftswerte jeder einzelnen Transformation interpolieren. Das Ergebnis wird dann zu einer einzigen Transformation zusammengefasst, die auf das „ QGraphicsItem “ angewendet wird.

Transformationen werden im echten 3D-Raum mithilfe von ` QMatrix4x4` berechnet. Wenn die Transformation auf ein ` QGraphicsItem` angewendet wird, wird sie zurück auf ein 2D-` QTransform` projiziert. Wenn mehrere `QGraphicsTransform`-Objekte auf ein ` QGraphicsItem` angewendet werden, werden alle Transformationen im echten 3D-Raum berechnet, wobei die Rückprojektion in 2D erst nach der Anwendung des letzten `QGraphicsTransform` erfolgt. Eine Ausnahme bildet ` QGraphicsRotation`, das nach jeder Drehung in 2D zurückprojiziert, um den Perspektiveffekt um die X- und Y-Achse zu erhalten.

Wenn Sie eine eigene konfigurierbare Transformation erstellen möchten, können Sie eine Unterklasse von `QGraphicsTransform` (oder einer der bestehenden Unterklassen) erstellen und die rein virtuelle Funktion ` applyTo()` neu implementieren, die einen Zeiger auf ein ` QMatrix4x4` entgegennimmt. Jede Operation, die Sie anwenden möchten, sollte als Eigenschaft verfügbar gemacht werden (z. B. `customTransform->setVerticalShear(2.5)`). Innerhalb Ihrer Neuimplementierung von ` applyTo()` können Sie die bereitgestellte Transformation entsprechend anpassen.

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

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

Dokumentation zu den Member-Funktionen

QGraphicsTransform::QGraphicsTransform(QObject *parent = nullptr)

Erstellt ein neues `QGraphicsTransform` mit dem angegebenen ` parent`.

[virtual noexcept] QGraphicsTransform::~QGraphicsTransform()

Löscht die Grafiktransformation.

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

Diese rein virtuelle Methode muss in abgeleiteten Klassen neu implementiert werden.

Sie wendet diese Transformation auf ` matrix` an.

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

[protected slot] void QGraphicsTransform::update()

Weist darauf hin, dass sich die Parameter dieser Transformationsoperation so geändert haben, dass ` applyTo()` nun ein anderes Ergebnis als zuvor zurückgibt.

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()`.

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