QGraphicsItemAnimation Class

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

Kopfzeile: #include <QGraphicsItemAnimation>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Vererbt: 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)

Detaillierte Beschreibung

Die Klasse QGraphicsItemAnimation animiert ein QGraphicsItem. Sie können Änderungen an der Transformationsmatrix des Elements in bestimmten Schritten planen. Die Klasse QGraphicsItemAnimation hat einen aktuellen Schrittwert. Wenn sich dieser Wert ändert, werden die für diesen Schritt geplanten Transformationen durchgefü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 zum Beispiel die Position eines Elements auf die Werte 0.0 und 1.0 setzen, wird die Animation das Element in einer geraden Linie zwischen diesen Positionen bewegen. Das Gleiche gilt für die Skalierung und Drehung.

Es ist üblich, die Klasse mit einem QTimeLine zu verwenden. Das Signal valueChanged() der Zeitleiste wird dann mit dem Slot setStep() verbunden. Sie können z. B. ein Element für die Drehung einrichten, indem Sie setRotationAt() für verschiedene Schrittwerte aufrufen. Die Zeitleiste für die Animation wird mit der Funktion setTimeLine() festgelegt.

Es folgt eine Beispielanimation 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 Schritte zwischen 0,0 und 1,0 liegen. Möglicherweise ist es erforderlich, setUpdateInterval() zu verwenden. Das Standard-Aktualisierungsintervall beträgt 40 ms. Eine geplante Transformation kann nicht entfernt werden, wenn sie festgelegt wurde, daher ist es nicht empfehlenswert, mehrere Transformationen der gleichen Art (z. B. Rotationen) im gleichen Schritt zu planen.

Siehe auch QTimeLine und Graphics View Framework.

Dokumentation der Mitgliedsfunktionen

QGraphicsItemAnimation::QGraphicsItemAnimation(QObject *parent = nullptr)

Konstruiert ein Animationsobjekt mit dem angegebenen parent.

[virtual noexcept] QGraphicsItemAnimation::~QGraphicsItemAnimation()

Zerstört das Animationsobjekt.

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

Diese Methode soll in Unterklassen überschrieben werden, die zusätzlichen Code ausführen müssen, nachdem ein neuer Schritt stattgefunden hat. Die Animation step ist für die Verwendung in Fällen vorgesehen, in denen die Aktion von ihrem Wert abhängt.

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

Diese Methode ist dafür gedacht, von Unterklassen überschrieben zu werden, die zusätzlichen Code ausführen müssen, bevor ein neuer Schritt stattfindet. Die Animation step ist für die Verwendung in Fällen vorgesehen, in denen die Aktion von ihrem Wert abhängt.

void QGraphicsItemAnimation::clear()

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

qreal QGraphicsItemAnimation::horizontalScaleAt(qreal step) const

Gibt die horizontale Skala für das Element mit dem angegebenen Wert step zurück.

Siehe auch setScaleAt().

qreal QGraphicsItemAnimation::horizontalShearAt(qreal step) const

Liefert die horizontale Scherung für das Element mit dem angegebenen Wert step.

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 dem angegebenen step Wert 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 mit dem angegebenen Wert step gedreht wird.

Siehe auch setRotationAt().

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

Gibt alle explizit eingefügten Rotationen 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 die angegebene item fest, die in der Animation verwendet werden soll.

Siehe auch item().

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

Setzt die Position des Elements am angegebenen step Wert auf die angegebene point.

Siehe auch posAt().

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

Setzt die Drehung des Elements mit dem angegebenen step Wert auf die angegebene angle.

Siehe auch rotationAt().

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

Setzt die Skalierung des Elements auf den angegebenen step Wert unter Verwendung der durch sx und sy angegebenen horizontalen und vertikalen Skalierungsfaktoren.

Siehe auch verticalScaleAt() und horizontalScaleAt().

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

Setzt die Scherung des Elements auf den angegebenen step Wert unter Verwendung der horizontalen und vertikalen Scherungsfaktoren, die unter sh und sv angegeben sind.

Siehe auch verticalShearAt() und horizontalShearAt().

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

Legt den aktuellen Wert step für die Animation fest, wodurch die in diesem Schritt geplanten Transformationen ausgeführt werden.

void QGraphicsItemAnimation::setTimeLine(QTimeLine *timeLine)

Setzt das Timeline-Objekt, das zur Steuerung der Animationsrate verwendet wird, auf die angegebene timeLine.

Siehe auch timeLine().

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

Setzt die Verschiebung des Elements auf den angegebenen Wert step unter Verwendung der durch dx und dy angegebenen horizontalen und vertikalen Koordinaten.

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 für das Element verwendete Transformation mit dem angegebenen Wert step zurück.

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 den vertikalen Maßstab für das Element mit dem angegebenen Wert step zurück.

Siehe auch setScaleAt().

qreal QGraphicsItemAnimation::verticalShearAt(qreal step) const

Liefert die vertikale Scherung für das Element mit dem angegebenen Wert step.

Siehe auch setShearAt().

qreal QGraphicsItemAnimation::xTranslationAt(qreal step) const

Gibt die horizontale Verschiebung des Elements mit dem angegebenen Wert step zurück.

Siehe auch setTranslationAt().

qreal QGraphicsItemAnimation::yTranslationAt(qreal step) const

Gibt die vertikale Verschiebung des Elements mit dem angegebenen Wert step zurück.

Siehe auch setTranslationAt().

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