Auf dieser Seite

QGraphicsItemAnimation Class

Die Klasse „QGraphicsItemAnimation“ bietet einfache Animationsunterstützung für „ QGraphicsItem “. Mehr dazu...

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

Diese Klasse ist veraltet. Wir raten dringend davon ab, sie in neuem Code zu verwenden.

Öffentliche Funktionen

QGraphicsItemAnimation(QObject *parent = nullptr)
virtual ~QGraphicsItemAnimation()
void clear()
qreal horizontalScaleAt(qreal step) const
qreal horizontalShearAt(qreal step) const
QGraphicsItem *item() const
QPointF posAt(qreal step) const
QList<std::pair<qreal, QPointF>> posList() const
qreal rotationAt(qreal step) const
QList<std::pair<qreal, qreal>> rotationList() const
QList<std::pair<qreal, QPointF>> scaleList() const
void setItem(QGraphicsItem *item)
void setPosAt(qreal step, const QPointF &point)
void setRotationAt(qreal step, qreal angle)
void setScaleAt(qreal step, qreal sx, qreal sy)
void setShearAt(qreal step, qreal sh, qreal sv)
void setTimeLine(QTimeLine *timeLine)
void setTranslationAt(qreal step, qreal dx, qreal dy)
QList<std::pair<qreal, QPointF>> shearList() const
QTimeLine *timeLine() const
QTransform transformAt(qreal step) const
QList<std::pair<qreal, QPointF>> translationList() const
qreal verticalScaleAt(qreal step) const
qreal verticalShearAt(qreal step) const
qreal xTranslationAt(qreal step) const
qreal yTranslationAt(qreal step) const

Öffentliche Slots

void setStep(qreal step)

Geschützte Funktionen

virtual void afterAnimationStep(qreal step)
virtual void beforeAnimationStep(qreal step)

Ausführliche Beschreibung

Die Klasse `QGraphicsItemAnimation` animiert ein ` QGraphicsItem`. Sie können Änderungen an der Transformationsmatrix des Elements in festgelegten Schritten planen. Die Klasse `QGraphicsItemAnimation` verfügt über einen Wert für den aktuellen Schritt. Wenn sich dieser Wert ändert, werden die für diesen Schritt geplanten Transformationen ausgeführt. Der aktuelle Schritt der Animation wird mit der Funktion ` setStep() ` festgelegt.

QGraphicsItemAnimation führt eine einfache lineare Interpolation zwischen den nächstgelegenen geplanten Änderungen durch, um die Matrix zu berechnen. Wenn Sie beispielsweise die Position eines Elements auf die Werte 0,0 und 1,0 setzen, zeigt die Animation, wie sich das Element in einer geraden Linie zwischen diesen Positionen bewegt. Dasselbe gilt für Skalierung und Drehung.

Üblicherweise wird die Klasse zusammen mit einer Zeitleiste ( QTimeLine) verwendet. Das Signal „ valueChanged()“ der Zeitleiste wird dann mit dem Slot „ setStep() “ verbunden. Sie können beispielsweise ein Element für eine Drehung einrichten, indem Sie „ setRotationAt() “ für verschiedene Schrittwerte aufrufen. Die Zeitleiste der Animation wird mit der Funktion „ setTimeLine()“ festgelegt.

Es folgt ein Beispiel für eine Animation mit einer Zeitleiste:

QGraphicsItem *ball = new QGraphicsEllipseItem(0, 0, 20, 20);

QTimeLine *timer = new QTimeLine(5000);
timer->setFrameRange(0, 100);

QGraphicsItemAnimation *animation = new QGraphicsItemAnimation;
animation->setItem(ball);
animation->setTimeLine(timer);

for (int i = 0; i < 200; ++i)
    animation->setPosAt(i / 200.0, QPointF(i, i));

QGraphicsScene *scene = new QGraphicsScene;
scene->setSceneRect(0, 0, 250, 250);
scene->addItem(ball);

QGraphicsView *view = new QGraphicsView(scene);
view->show();

timer->start();

Beachten Sie, dass die Schrittwerte zwischen 0,0 und 1,0 liegen. Möglicherweise ist die Verwendung von ` setUpdateInterval()` erforderlich. Das Standard-Aktualisierungsintervall beträgt 40 ms. Eine geplante Transformation kann nach ihrer Festlegung nicht mehr entfernt werden; daher wird davon abgeraten, mehrere Transformationen derselben Art (z. B. Drehungen) für denselben Schritt zu planen.

Siehe auch „ QTimeLine “ und „Graphics View Framework“.

Dokumentation zu Mitgliedsfunktionen

QGraphicsItemAnimation::QGraphicsItemAnimation(QObject *parent = nullptr)

Erstellt ein Animationsobjekt mit dem angegebenen „ parent “.

[virtual noexcept] QGraphicsItemAnimation::~QGraphicsItemAnimation()

Löscht das Animationsobjekt.

[virtual protected] void QGraphicsItemAnimation::afterAnimationStep(qreal step)

Diese Methode ist dafür vorgesehen, in Unterklassen überschrieben zu werden, die nach dem Ausführen eines neuen Schritts zusätzlichen Code ausführen müssen. Die Animations step wird für Fälle bereitgestellt, in denen die Aktion von ihrem Wert abhängt.

[virtual protected] void QGraphicsItemAnimation::beforeAnimationStep(qreal step)

Diese Methode ist dazu gedacht, von Unterklassen überschrieben zu werden, die vor dem Ausführen eines neuen Schritts zusätzlichen Code ausführen müssen. Die Animations step wird für Fälle bereitgestellt, in denen die Aktion von ihrem Wert abhängt.

void QGraphicsItemAnimation::clear()

Löscht die für die Animation verwendeten geplanten Transformationen, behält jedoch das Element und die Zeitleiste bei.

qreal QGraphicsItemAnimation::horizontalScaleAt(qreal step) const

Gibt die horizontale Skalierung für das Element bei dem angegebenen Wert von „ step “ zurück.

Siehe auch setScaleAt().

qreal QGraphicsItemAnimation::horizontalShearAt(qreal step) const

Gibt die horizontale Verschiebung für das Element am angegebenen „ step “-Wert zurück.

Siehe auch setShearAt().

QGraphicsItem *QGraphicsItemAnimation::item() const

Gibt das Element zurück, auf das das Animationsobjekt wirkt.

Siehe auch ` setItem()`.

QPointF QGraphicsItemAnimation::posAt(qreal step) const

Gibt die Position des Elements an der angegebenen „ step “-Position zurück.

Siehe auch setPosAt().

QList<std::pair<qreal, QPointF>> QGraphicsItemAnimation::posList() const

Gibt alle explizit eingefügten Positionen zurück.

Siehe auch posAt() und setPosAt().

qreal QGraphicsItemAnimation::rotationAt(qreal step) const

Gibt den Winkel zurück, um den das Element bei dem angegebenen Wert für „ step “ gedreht wird.

Siehe auch ` setRotationAt()`.

QList<std::pair<qreal, qreal>> QGraphicsItemAnimation::rotationList() const

Gibt alle explizit eingefügten Drehungen zurück.

Siehe auch rotationAt() und setRotationAt().

QList<std::pair<qreal, QPointF>> QGraphicsItemAnimation::scaleList() const

Gibt alle explizit eingefügten Skalen zurück.

Siehe auch verticalScaleAt(), horizontalScaleAt() und setScaleAt().

void QGraphicsItemAnimation::setItem(QGraphicsItem *item)

Legt fest, dass der angegebene „ item “ in der Animation verwendet werden soll.

Siehe auch item().

void QGraphicsItemAnimation::setPosAt(qreal step, const QPointF &point)

Setzt die Position des Elements am angegebenen Wert „ step “ auf den angegebenen Wert „ point “.

Siehe auch posAt().

void QGraphicsItemAnimation::setRotationAt(qreal step, qreal angle)

Stellt die Drehung des Elements bei dem angegebenen Wert „ step “ auf den angegebenen Wert „ angle “ ein.

Siehe auch ` rotationAt()`

void QGraphicsItemAnimation::setScaleAt(qreal step, qreal sx, qreal sy)

Legt den Maßstab des Elements anhand des angegebenen Werts „ step “ fest, wobei die durch „ sx “ und „ sy “ festgelegten horizontalen und vertikalen Skalierungsfaktoren verwendet werden.

Siehe auch verticalScaleAt() und horizontalScaleAt().

void QGraphicsItemAnimation::setShearAt(qreal step, qreal sh, qreal sv)

Legt die Shear-Einstellung des Elements auf den angegebenen Wert „ step “ fest, wobei die durch „ sh “ und „ sv “ festgelegten horizontalen und vertikalen Shear-Faktoren verwendet werden.

Siehe auch verticalShearAt() und horizontalShearAt().

[slot] void QGraphicsItemAnimation::setStep(qreal step)

Legt den aktuellen Wert von „ step “ für die Animation fest, wodurch die für diesen Schritt geplanten Transformationen ausgeführt werden.

void QGraphicsItemAnimation::setTimeLine(QTimeLine *timeLine)

Legt das Timeline-Objekt fest, das zur Steuerung der Animationsgeschwindigkeit verwendet wird, und zwar auf die angegebene „ timeLine “.

Siehe auch ` timeLine()`.

void QGraphicsItemAnimation::setTranslationAt(qreal step, qreal dx, qreal dy)

Legt die Verschiebung des Elements auf den angegebenen Wert „ step “ fest, wobei die durch „ dx “ und „ dy “ angegebenen horizontalen und vertikalen Koordinaten verwendet werden.

Siehe auch xTranslationAt() und yTranslationAt().

QList<std::pair<qreal, QPointF>> QGraphicsItemAnimation::shearList() const

Gibt alle explizit eingefügten Scheren zurück.

Siehe auch verticalShearAt(), horizontalShearAt() und setShearAt().

QTimeLine *QGraphicsItemAnimation::timeLine() const

Gibt das Timeline-Objekt zurück, mit dem die Geschwindigkeit der Animation gesteuert wird.

Siehe auch „ setTimeLine()“.

QTransform QGraphicsItemAnimation::transformAt(qreal step) const

Gibt die Transformation zurück, die für das Element mit dem angegebenen Wert „ step “ verwendet wird.

QList<std::pair<qreal, QPointF>> QGraphicsItemAnimation::translationList() const

Gibt alle explizit eingefügten Übersetzungen zurück.

Siehe auch „ xTranslationAt()“, „ yTranslationAt()“ und „ setTranslationAt()“.

qreal QGraphicsItemAnimation::verticalScaleAt(qreal step) const

Gibt die vertikale Skalierung für das Element am angegebenen Wert „ step “ zurück.

Siehe auch setScaleAt().

qreal QGraphicsItemAnimation::verticalShearAt(qreal step) const

Gibt die vertikale Scherung für das Element am angegebenen „ step “-Wert zurück.

Siehe auch „ setShearAt()“.

qreal QGraphicsItemAnimation::xTranslationAt(qreal step) const

Gibt die horizontale Verschiebung des Elements an der angegebenen Koordinate „ step “ zurück.

Siehe auch setTranslationAt().

qreal QGraphicsItemAnimation::yTranslationAt(qreal step) const

Gibt die vertikale Verschiebung des Elements an der angegebenen Position „ step “ zurück.

Siehe auch „ setTranslationAt()“.

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