Auf dieser Seite

QAbstractAnimation Class

Die Klasse „QAbstractAnimation“ bildet die Grundlage aller Animationen. Mehr dazu...

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

QAnimationGroup, „ QPauseAnimation “ sowie 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)

Neu implementierte geschützte Funktionen

virtual bool event(QEvent *event) override

Ausführliche Beschreibung

Die Klasse definiert die Funktionen für die Funktionalität, die allen Animationen gemeinsam ist. Durch Vererbung dieser Klasse können Sie benutzerdefinierte Animationen erstellen, die sich in das übrige Animations-Framework einbinden lassen.

Der Fortschritt einer Animation wird durch ihre aktuelle Zeit (currentLoopTime()) angegeben, die in Millisekunden vom Start der Animation (0) bis zu ihrem Ende (duration()) gemessen wird. Der Wert wird während der Ausführung der Animation automatisch aktualisiert. 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 Enumeration „ State “ definiert. Der aktuelle Zustand kann durch Aufruf von „ start()“, „ stop()“, „ pause()“ oder „ resume()“ geändert werden. Eine Animation setzt ihren „ current time “ beim Start immer zurück. Wird sie angehalten, wird sie bei der Fortsetzung mit derselben aktuellen Zeit fortgesetzt. Wenn eine Animation gestoppt wird, kann sie nicht fortgesetzt werden, behält jedoch ihre aktuelle Zeit bei (bis sie erneut gestartet wird). „QAbstractAnimation“ löst bei jeder Statusänderung das Ereignis „ stateChanged()“ aus.

Eine Animation kann beliebig oft wiederholt werden, indem die Eigenschaft „ loopCount “ festgelegt wird. Wenn die aktuelle Zeit einer Animation ihren „ duration()“-Wert erreicht, wird die aktuelle Zeit zurückgesetzt und die Animation läuft weiter. Ein Wiederholungswert von 1 (Standardwert) bedeutet, dass die Animation einmal ausgeführt wird. Beachten Sie, dass eine Dauer von -1 bedeutet, dass die Animation so lange läuft, bis sie gestoppt wird; die aktuelle Zeit erhöht sich dabei unbegrenzt. Wenn die aktuelle Zeit „ duration()“ entspricht und sich die Animation in ihrer letzten Schleife befindet, wird der Zustand „ Stopped “ erreicht und das Signal „ finished()“ ausgelöst.

QAbstractAnimation stellt rein virtuelle Funktionen bereit, 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 melden (wie oben beschrieben). Das Animations-Framework ruft „ updateCurrentTime()“ auf, wenn sich die aktuelle Zeit geändert hat. Durch die Neuimplementierung dieser Funktion können Sie den Fortschritt der Animation verfolgen. Beachten Sie, dass weder das Intervall zwischen den Aufrufen noch die Anzahl der Aufrufe dieser Funktion festgelegt ist; normalerweise sind es jedoch 60 Aktualisierungen pro Sekunde.

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

Siehe auch „ QVariantAnimation“ , „ QPropertyAnimation “, „ QAnimationGroup “ und „Das Animations-Framework“.

Dokumentation zu Mitgliedstypen

enum QAbstractAnimation::DeletionPolicy

KonstanteWertBeschreibung
QAbstractAnimation::KeepWhenStopped0Die Animation wird beim Anhalten nicht gelöscht.
QAbstractAnimation::DeleteWhenStopped1Die Animation wird nach dem Stoppen automatisch gelöscht.

enum QAbstractAnimation::Direction

Diese Enumeration 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 aus in Richtung des Endes bzw. der Dauer).
QAbstractAnimation::Backward1Die aktuelle Zeit der Animation nimmt mit der Zeit ab (d. h., sie bewegt sich vom Ende bzw. der Dauer in Richtung 0).

Siehe auch „ direction “.

enum QAbstractAnimation::State

Diese Enumeration beschreibt den Status der Animation.

KonstanteWertBeschreibung
QAbstractAnimation::Stopped0Die Animation läuft nicht. Dies ist der Anfangszustand von ` QAbstractAnimation`, und nach Abschluss der Animation kehrt der Zustand ` QAbstractAnimation ` wieder ein. Die aktuelle Zeit bleibt unverändert, bis entweder ` setCurrentTime()` aufgerufen wird oder die Animation durch Aufruf von ` start()` gestartet wird.
QAbstractAnimation::Paused1Die Animation ist angehalten (d. h. vorübergehend unterbrochen). Durch den Aufruf von ` resume()` wird die Animation fortgesetzt.
QAbstractAnimation::Running2Die Animation läuft. Solange sich die Steuerung in der Ereignisschleife befindet, aktualisiert „ QAbstractAnimation “ in regelmäßigen Abständen die aktuelle Zeit und ruft dabei bei Bedarf „ updateCurrentTime()“ auf.

Siehe auch „ state()“ und „ stateChanged()“.

Dokumentation zu den Eigenschaften

[bindable read-only] currentLoop : int

Hinweis: Diese Eigenschaft unterstützt „ QProperty “-Bindungen.

Diese Eigenschaft gibt die aktuelle Schleife der Animation an

Diese Eigenschaft beschreibt den aktuellen Durchlauf der Animation. Standardmäßig beträgt die Anzahl der Durchläufe der Animation 1, sodass der aktuelle Durchlauf immer 0 ist. Beträgt die Anzahl der Durchläufe 2 und läuft die Animation über ihre Dauer hinaus, wird sie automatisch zurückgespult und bei der aktuellen Zeit 0 und dem aktuellen Durchlauf 1 neu gestartet, und so weiter.

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

Zugriffsfunktionen:

int currentLoop() const

Notifier-Signal:

void currentLoopChanged(int currentLoop)

[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, wodurch die aktuelle Zeit im Verlauf der Animation automatisch angepasst wird.

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

Hinweis: Sie können andere Eigenschaften an `currentTime` binden, es wird jedoch nicht empfohlen, Bindungen daran festzulegen. Im Verlauf der Animation wird `currentTime` automatisch aktualisiert, wodurch die Bindungen aufgehoben werden.

Zugriffsfunktionen:

int currentTime() const
void setCurrentTime(int msecs)

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 die Zeit nach dem Aufruf von ` start()` von 0 in Richtung der Animationsdauer verläuft oder vom Wert der Dauer in Richtung 0.

Standardmäßig ist diese Eigenschaft auf „ Forward “ gesetzt.

Zugriffsfunktionen:

QAbstractAnimation::Direction direction() const
void setDirection(QAbstractAnimation::Direction direction)

Notifier-Signal:

void directionChanged(QAbstractAnimation::Direction newDirection)

[read-only] duration : int

Diese Eigenschaft gibt die Dauer der Animation an.

Ist die Dauer -1, bedeutet dies, dass die Dauer nicht definiert 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 Anzahl der Wiederholungen der Animation

Diese Eigenschaft beschreibt die Anzahl der Wiederholungen der Animation als Ganzzahl. Standardmäßig ist dieser Wert 1, was bedeutet, dass die Animation nur einmal ausgeführt und dann gestoppt werden soll. Durch Ändern dieses Werts können Sie die Animation mehrmals wiederholen lassen. Bei einem Wert von 0 wird die Animation überhaupt nicht ausgeführt, bei einem Wert von -1 wird die Animation endlos wiederholt, bis sie gestoppt wird. Bei einer Animation mit undefinierter Dauer wird die Wiederholung nicht unterstützt. Sie wird nur einmal ausgeführt.

Zugriffsfunktionen:

int loopCount() const
void setLoopCount(int loopCount)

[bindable read-only] state : State

Hinweis: Diese Eigenschaft unterstützt Bindungen vom Typ „ QProperty “.

Zustand der Animation.

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

Hinweis: Statusaktualisierungen können zu Aktualisierungen der Eigenschaft „ currentTime “ führen, was wiederum deren Bindungen aufheben kann. Seien Sie daher vorsichtig, wenn Sie Bindungen an die Eigenschaft „ currentTime “ festlegen und erwarten, dass sich der Status der Animation ändert.

Zugriffsfunktionen:

QAbstractAnimation::State state() const

Notifier-Signal:

void stateChanged(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)

Dokumentation zu den Mitgliedsfunktionen

QAbstractAnimation::QAbstractAnimation(QObject *parent = nullptr)

Erstellt 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, falls sie gerade läuft, und löscht anschließend das ` QAbstractAnimation`. Ist die Animation Teil eines ` QAnimationGroup`, wird sie automatisch entfernt, bevor sie gelöscht wird.

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

QAbstractAnimation gibt dieses Signal aus, sobald sich die Stromschleife ändert. currentLoop ist die Stromschleife.

Hinweis: Notifier -Signal für die Eigenschaft „ currentLoop “.

Siehe auch „ currentLoop()“ und „ loopCount()“.

int QAbstractAnimation::currentLoopTime() const

Gibt die aktuelle Zeit innerhalb der aktuellen Schleife zurück. Der Wert kann zwischen 0 und duration() liegen.

Siehe auch duration() und currentTime.

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

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

Hinweis: Notifier -Signal 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 legt fest, wie lange „ QAbstractAnimation “ die aktuelle Zeit aktualisieren soll. Diese Dauer ist lokal und umfasst nicht die Anzahl der Schleifendurchläufe.

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

Handelt es sich bei der Animation um eine parallele „ QAnimationGroup “, entspricht die Dauer der längsten Dauer aller ihrer Animationen. Handelt es sich bei der Animation um eine sequenzielle „ QAnimationGroup “, entspricht die Dauer der Summe der Dauer aller ihrer Animationen.

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

Siehe auch loopCount.

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

Implementiert neu: ` QObject::event(QEvent *e)`.

[signal] void QAbstractAnimation::finished()

QAbstractAnimation gibt dieses Signal aus, nachdem die Animation beendet ist und ihr Ende erreicht hat.

Dieses Signal wird nach dem Aufruf von ` stateChanged()` ausgelöst.

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 ab dem aktuellen Zeitpunkt fortfahren möchten, 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, wird das Signal „ stateChanged()“ ausgesendet. Die Eigenschaft „ currentTime “ 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 “ legt fest, ob die Animation nach Abschluss gelöscht werden soll oder nicht. Wenn die Animation startet, wird das Signal „ stateChanged()“ ausgelöst, und „ state()“ gibt den Wert „Running“ zurück. Sobald die Steuerung die Ereignisschleife erreicht, läuft die Animation von selbst weiter und ruft im Verlauf der Animation in regelmäßigen Abständen „ updateCurrentTime()“ auf.

Ist die Animation derzeit angehalten oder hat sie bereits das Ende erreicht, wird durch den Aufruf von `start()` die Animation zurückgespult und von vorne begonnen. Wenn die Animation das Ende erreicht, wird sie entweder angehalten oder – sofern die Schleifenstufe größer als 1 ist – zurückgespult und von vorne fortgesetzt.

Läuft die Animation bereits, hat diese Funktion keine Auswirkung.

Siehe auch ` stop()` und ` state()`.

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

QAbstractAnimation gibt dieses Signal aus, sobald sich der Status der Animation von „ oldState “ zu „ newState “ geändert hat. Dieses Signal wird nach dem Aufruf der virtuellen Funktion „ updateState()“ ausgegeben.

Hinweis: Notifier -Signal für die Eigenschaft ` state`.

Siehe auch „ updateState()“.

[slot] void QAbstractAnimation::stop()

Hält die Animation an. Wenn die Animation angehalten wird, gibt sie das Signal „ stateChanged()“ aus, und „ state()“ gibt „Stopped“ zurück. Die aktuelle Zeit wird nicht geändert.

Wenn die Animation nach Erreichen des Endes von selbst stoppt (d. h. currentLoopTime() == duration() und currentLoop() > loopCount() - 1), wird das Signal „ finished()“ ausgelöst.

Siehe auch start() und state().

int QAbstractAnimation::totalDuration() const

Gibt die Gesamtdauer und die effektive Dauer der Animation zurück, einschließlich der Anzahl der Wiederholungen.

Hinweis: Wenn die Anzahl der Wiederholungen sehr groß ist oder die Dauer einer einzelnen Wiederholung zu lang ist, kann die Gesamtdauer zu groß sein, um in einen ` int` zu passen. In diesem Fall wird der Wert auf ` INT_MAX` begrenzt.

Siehe auch ` duration()` und ` currentTime`.

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

Diese rein virtuelle Funktion wird jedes Mal aufgerufen, wenn sich der Wert von „ 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 ` gibt die neue Richtung an.

Siehe auch „ setDirection()“ und „ direction()“.

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

Diese virtuelle Funktion wird von QAbstractAnimation aufgerufen, wenn sich der Status der Animation von oldState zu newState ändert.

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

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