QAbstractAnimation Class

Die Klasse QAbstractAnimation ist die Basis für alle Animationen. Mehr...

Kopfzeile: #include <QAbstractAnimation>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Vererbt: QObject
Vererbt von:

QAnimationGroup, QPauseAnimation, und QVariantAnimation

Öffentliche Typen

enum DeletionPolicy { KeepWhenStopped, DeleteWhenStopped }
enum Direction { Forward, Backward }
enum State { Stopped, Paused, Running }

Eigenschaften

Öffentliche Funktionen

QAbstractAnimation(QObject *parent = nullptr)
virtual ~QAbstractAnimation()
QBindable<int> bindableCurrentLoop() const
QBindable<int> bindableCurrentTime()
QBindable<QAbstractAnimation::Direction> bindableDirection()
QBindable<int> bindableLoopCount()
QBindable<QAbstractAnimation::State> bindableState() const
int currentLoop() const
int currentLoopTime() const
int currentTime() const
QAbstractAnimation::Direction direction() const
virtual int duration() const = 0
QAnimationGroup *group() const
int loopCount() const
void setDirection(QAbstractAnimation::Direction direction)
void setLoopCount(int loopCount)
QAbstractAnimation::State state() const
int totalDuration() const

Öffentliche Slots

void pause()
void resume()
void setCurrentTime(int msecs)
void setPaused(bool paused)
void start(QAbstractAnimation::DeletionPolicy policy = KeepWhenStopped)
void stop()

Signale

void currentLoopChanged(int currentLoop)
void directionChanged(QAbstractAnimation::Direction newDirection)
void finished()
void stateChanged(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)

Geschützte Funktionen

virtual void updateCurrentTime(int currentTime) = 0
virtual void updateDirection(QAbstractAnimation::Direction direction)
virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)

Reimplementierte geschützte Funktionen

virtual bool event(QEvent *event) override

Detaillierte Beschreibung

Die Klasse definiert die Funktionen für die von allen Animationen gemeinsam genutzte Funktionalität. Durch das Erben dieser Klasse können Sie benutzerdefinierte Animationen erstellen, die sich in den Rest des Animations-Frameworks einfügen.

Der Fortschritt einer Animation wird durch ihre aktuelle Zeit (currentLoopTime()) angegeben, die in Millisekunden vom Beginn der Animation (0) bis zu ihrem Ende (duration()) gemessen wird. Der Wert wird automatisch aktualisiert, während die Animation läuft. Er kann auch direkt mit setCurrentTime() gesetzt werden.

Zu jedem Zeitpunkt befindet sich eine Animation in einem von drei Zuständen: Running, Stopped, oder Paused- wie durch die Aufzählung State definiert. Der aktuelle Zustand kann durch die Aufrufe start(), stop(), pause() oder resume() geändert werden. Eine Animation setzt immer ihren current time zurück, wenn sie gestartet wird. Wenn sie angehalten wird, wird sie mit der gleichen aktuellen Zeit fortgesetzt, wenn sie wieder aufgenommen wird. Wenn eine Animation angehalten wird, kann sie nicht wieder aufgenommen werden, sondern behält ihre aktuelle Zeit bei (bis sie erneut gestartet wird). QAbstractAnimation gibt stateChanged() aus, wenn sich ihr Zustand ändert.

Eine Animation kann beliebig oft wiederholt werden, indem man die Eigenschaft loopCount setzt. Wenn die aktuelle Zeit einer Animation ihre duration() erreicht, wird sie die aktuelle Zeit zurücksetzen und weiterlaufen. Eine Schleifenanzahl von 1 (der Standardwert) bedeutet, dass die Animation einmal durchlaufen wird. Beachten Sie, dass eine Dauer von -1 bedeutet, dass die Animation so lange läuft, bis sie gestoppt wird; die aktuelle Zeit wird unbegrenzt verlängert. Wenn die aktuelle Zeit gleich duration() ist und die Animation sich in ihrer letzten Schleife befindet, wird der Zustand Stopped erreicht und das Signal finished() ausgegeben.

QAbstractAnimation bietet rein virtuelle Funktionen, die von Unterklassen verwendet werden, um den Fortschritt der Animation zu verfolgen: duration() und updateCurrentTime(). Mit der Funktion duration() können Sie eine Dauer für die Animation angeben (wie oben beschrieben). Der Animationsrahmen ruft updateCurrentTime() auf, wenn sich die aktuelle Zeit geändert hat. Wenn Sie diese Funktion neu implementieren, können Sie den Fortschritt der Animation verfolgen. Beachten Sie, dass weder das Intervall zwischen den Aufrufen noch die Anzahl der Aufrufe dieser Funktion definiert sind; normalerweise werden jedoch 60 Aktualisierungen pro Sekunde vorgenommen.

Durch die Neuimplementierung von updateState() können Sie die Zustandsänderungen der Animation verfolgen, was besonders nützlich für Animationen ist, die nicht zeitgesteuert sind.

Siehe auch QVariantAnimation, QPropertyAnimation, QAnimationGroup, und The Animation Framework.

Dokumentation der Mitgliedstypen

enum QAbstractAnimation::DeletionPolicy

KonstanteWertBeschreibung
QAbstractAnimation::KeepWhenStopped0Die Animation wird nicht gelöscht, wenn sie angehalten wird.
QAbstractAnimation::DeleteWhenStopped1Die Animation wird automatisch gelöscht, wenn sie angehalten wird.

enum QAbstractAnimation::Direction

Diese Aufzählung beschreibt die Richtung der Animation im Zustand Running.

KonstanteWertBeschreibung
QAbstractAnimation::Forward0Die aktuelle Zeit der Animation nimmt mit der Zeit zu (d.h. sie bewegt sich von 0 und in Richtung Ende / Dauer).
QAbstractAnimation::Backward1Die aktuelle Zeit der Animation nimmt mit der Zeit ab (d.h. sie bewegt sich vom Ende / der Dauer weg und auf 0 zu).

Siehe auch direction.

enum QAbstractAnimation::State

Diese Aufzählung beschreibt den Zustand der Animation.

KonstanteWertBeschreibung
QAbstractAnimation::Stopped0Die Animation läuft nicht. Dies ist der Anfangszustand von QAbstractAnimation und der Zustand, in den QAbstractAnimation zurückkehrt, wenn die Animation beendet ist. Die aktuelle Zeit bleibt unverändert, bis entweder setCurrentTime() aufgerufen wird oder die Animation durch den Aufruf von start() gestartet wird.
QAbstractAnimation::Paused1Die Animation wird angehalten (d. h. vorübergehend unterbrochen). Durch den Aufruf von resume() wird die Animation wieder aufgenommen.
QAbstractAnimation::Running2Die Animation läuft. Während sich die Steuerung in der Ereignisschleife befindet, aktualisiert QAbstractAnimation in regelmäßigen Abständen die aktuelle Zeit und ruft gegebenenfalls updateCurrentTime() auf.

Siehe auch state() und stateChanged().

Dokumentation der Eigenschaft

[bindable read-only] currentLoop : int

Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.

Diese Eigenschaft enthält die aktuelle Schleife der Animation

Diese Eigenschaft beschreibt die aktuelle Schleife der Animation. Standardmäßig ist die Schleifenanzahl der Animation 1, so dass die aktuelle Schleife immer 0 ist. Wenn die Schleifenanzahl 2 ist und die Animation über ihre Dauer hinausläuft, wird sie automatisch zurückgespult und bei der aktuellen Zeit 0 neu gestartet, und die aktuelle Schleife 1, usw.

Wenn sich die aktuelle Schleife ändert, gibt QAbstractAnimation das Signal currentLoopChanged() aus.

[bindable] currentTime : int

Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.

Diese Eigenschaft enthält die aktuelle Zeit und den Fortschritt der Animation

Diese Eigenschaft beschreibt die aktuelle Zeit der Animation. Sie können die aktuelle Zeit ändern, indem Sie setCurrentTime aufrufen, oder Sie können start() aufrufen und die Animation laufen lassen, wobei die aktuelle Zeit automatisch gesetzt wird, wenn die Animation fortschreitet.

Die aktuelle Zeit der Animation beginnt bei 0 und endet bei totalDuration().

Hinweis: Sie können andere Eigenschaften an currentTime binden, aber es wird nicht empfohlen, Bindungen an currentTime zu setzen. Wenn die Animation fortschreitet, wird die currentTime automatisch aktualisiert, was die Bindungen aufhebt.

Siehe auch loopCount und currentLoopTime().

[bindable] direction : Direction

Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.

Diese Eigenschaft gibt die Richtung der Animation an, wenn sie sich im Zustand Running befindet.

Diese Richtung gibt an, ob sich die Zeit von 0 in Richtung der Animationsdauer bewegt, oder vom Wert der Dauer in Richtung 0, nachdem start() aufgerufen wurde.

Standardmäßig ist diese Eigenschaft auf Forward eingestellt.

[read-only] duration : const int

Diese Eigenschaft enthält die Dauer der Animation.

Wenn die Dauer -1 ist, bedeutet dies, dass die Dauer undefiniert ist. In diesem Fall wird loopCount ignoriert.

Zugriffsfunktionen:

virtual int duration() const = 0

[bindable] loopCount : int

Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.

Diese Eigenschaft enthält die Schleifenanzahl der Animation

Diese Eigenschaft beschreibt die Anzahl der Schleifen der Animation als Ganzzahl. Standardmäßig ist dieser Wert 1, was bedeutet, dass die Animation nur einmal laufen soll und dann aufhört. Durch Ändern des Wertes können Sie die Animation mehrmals durchlaufen lassen. Bei einem Wert von 0 läuft die Animation überhaupt nicht, und bei einem Wert von -1 läuft die Animation in einer Endlosschleife, bis sie angehalten wird. Es ist nicht möglich, eine Animation mit einer unbestimmten Dauer in einer Schleife laufen zu lassen. Sie wird nur einmal ausgeführt.

[bindable read-only] state : State

Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.

Zustand der Animation.

Diese Eigenschaft beschreibt den aktuellen Zustand der Animation. Wenn sich der Zustand der Animation ändert, sendet QAbstractAnimation das Signal stateChanged().

Hinweis: Zustandsaktualisierungen können zu Aktualisierungen der Eigenschaft currentTime führen, was wiederum deren Bindungen aufheben kann. Seien Sie also vorsichtig, wenn Sie Bindungen an die Eigenschaft currentTime setzen, wenn Sie erwarten, dass sich der Zustand der Animation ändert.

Dokumentation der Mitgliedsfunktionen

QAbstractAnimation::QAbstractAnimation(QObject *parent = nullptr)

Konstruiert die Basisklasse QAbstractAnimation und übergibt parent an den Konstruktor von QObject.

Siehe auch QVariantAnimation und QAnimationGroup.

[virtual noexcept] QAbstractAnimation::~QAbstractAnimation()

Hält die Animation an, wenn sie läuft, und zerstört dann die QAbstractAnimation. Wenn die Animation Teil einer QAnimationGroup ist, wird sie automatisch entfernt, bevor sie zerstört wird.

[signal] void QAbstractAnimation::currentLoopChanged(int currentLoop)

QAbstractAnimation gibt dieses Signal aus, wenn sich die aktuelle Schleife ändert. currentLoop ist die aktuelle Schleife.

Hinweis: Meldesignal für die Eigenschaft currentLoop.

Siehe auch currentLoop() und loopCount().

int QAbstractAnimation::currentLoopTime() const

Gibt die aktuelle Zeit innerhalb der aktuellen Schleife zurück. Sie kann von 0 bis duration() reichen.

Siehe auch duration() und currentTime.

[signal] void QAbstractAnimation::directionChanged(QAbstractAnimation::Direction newDirection)

QAbstractAnimation gibt dieses Signal aus, wenn die Richtung geändert wurde. newDirection ist die neue Richtung.

Hinweis: Meldesignal für die Eigenschaft direction.

Siehe auch direction.

[pure virtual] int QAbstractAnimation::duration() const

Diese rein virtuelle Funktion gibt die Dauer der Animation zurück und definiert, wie lange QAbstractAnimation die aktuelle Zeit aktualisieren soll. Diese Dauer ist lokal und beinhaltet nicht die Anzahl der Schleifen.

Ein Rückgabewert von -1 bedeutet, dass die Animation keine definierte Dauer hat; die Animation sollte ewig laufen, bis sie gestoppt wird. Dies ist nützlich für Animationen, die nicht zeitgesteuert sind oder deren Dauer sich nicht leicht vorhersagen lässt (z. B. ereignisgesteuerte Audiowiedergabe in einem Spiel).

Handelt es sich bei der Animation um eine parallele QAnimationGroup, so ist die Dauer die längste Dauer aller Animationen. Handelt es sich bei der Animation um eine sequenzielle QAnimationGroup, so ist die Dauer die Summe der Dauer aller Animationen.

Hinweis: Getter-Funktion für die Eigenschaft duration.

Siehe auch loopCount.

[override virtual protected] bool QAbstractAnimation::event(QEvent *event)

Reimplements: QObject::event(QEvent *e).

[signal] void QAbstractAnimation::finished()

QAbstractAnimation gibt dieses Signal aus, nachdem die Animation gestoppt wurde und das Ende erreicht hat.

Dieses Signal wird nach stateChanged() ausgegeben.

Siehe auch stateChanged().

QAnimationGroup *QAbstractAnimation::group() const

Wenn diese Animation Teil einer QAnimationGroup ist, gibt diese Funktion einen Zeiger auf die Gruppe zurück; andernfalls gibt sie nullptr zurück.

Siehe auch QAnimationGroup::addAnimation().

[slot] void QAbstractAnimation::pause()

Hält die Animation an. Wenn die Animation angehalten ist, gibt state() den Wert Paused zurück. Der Wert von currentTime bleibt unverändert, bis resume() oder start() aufgerufen wird. Wenn Sie mit der aktuellen Zeit fortfahren wollen, rufen Sie resume() auf.

Siehe auch start(), state(), und resume().

[slot] void QAbstractAnimation::resume()

Setzt die Animation fort, nachdem sie angehalten wurde. Wenn die Animation fortgesetzt wird, gibt sie die Signale resumed() und stateChanged() aus. Die aktuelle Zeit wird nicht geändert.

Siehe auch start(), pause(), und state().

[slot] void QAbstractAnimation::setPaused(bool paused)

Wenn paused wahr ist, wird die Animation angehalten. Wenn paused falsch ist, wird die Animation fortgesetzt.

Siehe auch state(), pause(), und resume().

[slot] void QAbstractAnimation::start(QAbstractAnimation::DeletionPolicy policy = KeepWhenStopped)

Startet die Animation. Das Argument policy gibt an, ob die Animation nach Beendigung gelöscht werden soll oder nicht. Wenn die Animation beginnt, wird das Signal stateChanged() ausgegeben, und state() gibt Running zurück. Wenn die Kontrolle die Ereignisschleife erreicht, läuft die Animation von selbst und ruft regelmäßig updateCurrentTime() auf, während die Animation fortschreitet.

Wenn die Animation gerade gestoppt ist oder bereits das Ende erreicht hat, wird die Animation durch den Aufruf von start() zurückgespult und beginnt von vorne. Wenn die Animation das Ende erreicht, wird sie entweder angehalten oder, wenn der Schleifenlevel größer als 1 ist, zurückgespult und von Anfang an fortgesetzt.

Wenn die Animation bereits läuft, bewirkt diese Funktion nichts.

Siehe auch stop() und state().

[signal] void QAbstractAnimation::stateChanged(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)

QAbstractAnimation gibt dieses Signal aus, wenn sich der Zustand der Animation von oldState auf newState geändert hat. Dieses Signal wird nach dem Aufruf der virtuellen Funktion updateState() ausgegeben.

Hinweis: Benachrichtigungssignal für die Eigenschaft state.

Siehe auch updateState().

[slot] void QAbstractAnimation::stop()

Hält die Animation an. Wenn die Animation gestoppt ist, wird das Signal stateChanged() ausgegeben, und state() gibt Stopped zurück. Die aktuelle Zeit wird nicht verändert.

Wenn die Animation nach Erreichen des Endes von selbst anhält (d.h. currentLoopTime() == duration() und currentLoop() > loopCount() - 1), wird das Signal finished() ausgegeben.

Siehe auch start() und state().

int QAbstractAnimation::totalDuration() const

Liefert die Gesamtdauer und die effektive Dauer der Animation, einschließlich der Anzahl der Schleifen.

Siehe auch duration() und currentTime.

[pure virtual protected] void QAbstractAnimation::updateCurrentTime(int currentTime)

Diese rein virtuelle Funktion wird jedes Mal aufgerufen, wenn sich die currentTime der Animation ändert.

Siehe auch updateState().

[virtual protected] void QAbstractAnimation::updateDirection(QAbstractAnimation::Direction direction)

Diese virtuelle Funktion wird von QAbstractAnimation aufgerufen, wenn die Richtung der Animation geändert wird. Das Argument direction ist die neue Richtung.

Siehe auch setDirection() und direction().

[virtual protected] void QAbstractAnimation::updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)

Diese virtuelle Funktion wird von QAbstractAnimation aufgerufen, wenn der Zustand der Animation von oldState auf newState geändert wird.

Siehe auch start(), stop(), pause(), und resume().

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