Sur cette page

QAbstractAnimation Class

La classe `QAbstractAnimation` constitue la base de toutes les animations. En savoir plus...

En-tête : #include <QAbstractAnimation>
CMake : find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake : QT += core
Hérite de : QObject
Hérité par :

QAnimationGroup, QPauseAnimation et QVariantAnimation

Types publics

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

Propriétés

Fonctions publiques

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

Emplacements publics

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

Signaux

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

Fonctions protégées

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

Fonctions protégées réimplémentées

virtual bool event(QEvent *event) override

Description détaillée

Cette classe définit les fonctions communes à toutes les animations. En héritant de cette classe, vous pouvez créer des animations personnalisées qui s'intègrent au reste du framework d'animation.

La progression d’une animation est indiquée par son temps actuel (currentLoopTime()), qui est mesuré en millisecondes depuis le début de l’animation (0) jusqu’à sa fin (duration()). Cette valeur est mise à jour automatiquement pendant l’exécution de l’animation. Elle peut également être définie directement à l’aide de la fonction setCurrentTime().

À tout moment, une animation se trouve dans l’un des trois états suivants : Running, Stopped ou Paused– tels que définis par l’énumération State. L’état actuel peut être modifié en appelant start(), stop(), pause() ou resume(). Une animation réinitialise toujours son « current time » lorsqu’elle est lancée. Si elle est mise en pause, elle reprend à la même durée actuelle lorsqu’elle est relancée. Lorsqu’une animation est arrêtée, elle ne peut pas être relancée, mais conserve sa durée actuelle (jusqu’à ce qu’elle soit relancée). QAbstractAnimation émet un événement « stateChanged() » chaque fois que son état change.

Une animation peut être répétée un nombre illimité de fois en définissant la propriété « loopCount ». Lorsque l’heure actuelle d’une animation atteint sa valeur « duration » (), celle-ci réinitialise l’heure actuelle et continue de s’exécuter. Un nombre de boucles égal à 1 (valeur par défaut) signifie que l’animation s’exécutera une seule fois. Notez qu’une durée de -1 signifie que l’animation s’exécutera jusqu’à ce qu’elle soit arrêtée ; l’instant courant augmentera indéfiniment. Lorsque l’instant courant est égal à duration() et que l’animation en est à sa dernière boucle, l’état « Stopped » est activé et le signal finished() est émis.

QAbstractAnimation fournit des fonctions virtuelles pures utilisées par les sous-classes pour suivre la progression de l’animation : duration() et updateCurrentTime(). La fonction duration() vous permet de signaler une durée pour l’animation (comme indiqué ci-dessus). Le framework d’animation appelle updateCurrentTime() lorsque l’heure actuelle a changé. En réimplémentant cette fonction, vous pouvez suivre la progression de l’animation. Notez que ni l’intervalle entre les appels, ni le nombre d’appels à cette fonction ne sont définis ; toutefois, on compte généralement 60 mises à jour par seconde.

En réimplémentant updateState(), vous pouvez suivre les changements d’état de l’animation, ce qui est particulièrement utile pour les animations qui ne sont pas pilotées par le temps.

Voir également QVariantAnimation, QPropertyAnimation, QAnimationGroup et Le framework d’animation.

Documentation sur les types de membres

enum QAbstractAnimation::DeletionPolicy

ConstanteValeurDescription
QAbstractAnimation::KeepWhenStopped0L'animation ne sera pas supprimée lorsqu'elle sera arrêtée.
QAbstractAnimation::DeleteWhenStopped1L'animation sera automatiquement supprimée lorsqu'elle sera arrêtée.

enum QAbstractAnimation::Direction

Cette énumération décrit la direction de l'animation lorsqu'elle se trouve dans l'état « Running ».

ConstanteValeurDescription
QAbstractAnimation::Forward0Le temps actuel de l’animation augmente avec le temps (c’est-à-dire qu’il évolue de 0 vers la fin / la durée).
QAbstractAnimation::Backward1Le temps actuel de l'animation diminue au fil du temps (c'est-à-dire qu'il évolue de la fin / durée vers 0).

Voir aussi direction.

enum QAbstractAnimation::State

Cette énumération décrit l'état de l'animation.

ConstanteValeurDescription
QAbstractAnimation::Stopped0L'animation n'est pas en cours d'exécution. Il s'agit de l'état initial de la fonction QAbstractAnimation, et de l'état dans lequel la fonction QAbstractAnimation revient une fois terminée. L'heure actuelle reste inchangée jusqu'à ce que la fonction setCurrentTime() soit appelée, ou que l'animation soit lancée en appelant la fonction start().
QAbstractAnimation::Paused1L’animation est mise en pause (c’est-à-dire temporairement suspendue). L’appel de resume() relancera l’animation.
QAbstractAnimation::Running2L’animation est en cours d’exécution. Tant que le contrôle se trouve dans la boucle d’événements, QAbstractAnimation mettra à jour son heure actuelle à intervalles réguliers, en appelant updateCurrentTime() le cas échéant.

Voir également state() et stateChanged().

Documentation sur les propriétés

[bindable read-only] currentLoop : int

Remarque : cette propriété prend en charge les liaisons « QProperty ».

Cette propriété indique la boucle actuelle de l'animation

Cette propriété décrit la boucle actuelle de l’animation. Par défaut, le nombre de boucles de l’animation est égal à 1 ; la boucle actuelle est donc toujours égale à 0. Si le nombre de boucles est égal à 2 et que l’animation dépasse sa durée, elle revient automatiquement en arrière et redémarre à l’instant courant 0, avec la boucle actuelle égale à 1, et ainsi de suite.

Lorsque la boucle actuelle change, QAbstractAnimation émet le signal currentLoopChanged().

Fonctions d’accès :

int currentLoop() const

Signal du notificateur :

void currentLoopChanged(int currentLoop)

[bindable] currentTime : int

Remarque : cette propriété prend en charge les liaisons de type « QProperty ».

Cette propriété contient l'instant actuel et la progression de l'animation

Cette propriété indique l'instant actuel de l'animation. Vous pouvez modifier l'instant actuel en appelant la méthode setCurrentTime(), ou bien appeler la méthode start() et laisser l'animation s'exécuter, ce qui définira automatiquement l'instant actuel au fur et à mesure que l'animation progresse.

La durée actuelle de l'animation commence à 0 et se termine à totalDuration().

Remarque : vous pouvez lier d’autres propriétés à currentTime, mais il n’est pas recommandé de définir des liaisons vers celle-ci. À mesure que l’animation progresse, currentTime est mise à jour automatiquement, ce qui annule ses liaisons.

Fonctions d'accès :

int currentTime() const
void setCurrentTime(int msecs)

Voir également loopCount et currentLoopTime().

[bindable] direction : Direction

Remarque : cette propriété prend en charge les liaisons de type « QProperty ».

Cette propriété indique la direction de l'animation lorsqu'elle est dans l'état « Running ».

Cette direction indique si le temps évolue de 0 vers la durée de l'animation, ou si, après l'appel de la méthode ` start()`, il évolue de la valeur de la durée vers 0.

Par défaut, cette propriété est définie sur ` Forward`.

Fonctions d'accès :

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

Signal de notification :

void directionChanged(QAbstractAnimation::Direction newDirection)

[read-only] duration : int

Cette propriété indique la durée de l'animation.

Si la durée est égale à -1, cela signifie qu'elle n'est pas définie. Dans ce cas, la propriété « loopCount » est ignorée.

Fonctions d'accès :

virtual int duration() const = 0

[bindable] loopCount : int

Remarque : cette propriété prend en charge les liaisons de type « QProperty ».

Cette propriété contient le nombre de boucles de l'animation

Cette propriété décrit le nombre de boucles de l'animation sous forme d'entier. Par défaut, cette valeur est égale à 1, ce qui indique que l'animation ne doit s'exécuter qu'une seule fois, puis s'arrêter. En modifiant cette valeur, vous pouvez faire en sorte que l’animation soit lue en boucle plusieurs fois. Avec une valeur de 0, l’animation ne sera pas lue du tout, et avec une valeur de -1, elle sera lue en boucle indéfiniment jusqu’à ce qu’on l’arrête. La boucle n’est pas prise en charge pour une animation dont la durée n’est pas définie. Elle ne sera lue qu’une seule fois.

Fonctions d'accès :

int loopCount() const
void setLoopCount(int loopCount)

[bindable read-only] state : State

Remarque : cette propriété prend en charge les liaisons « QProperty ».

État de l'animation.

Cette propriété décrit l'état actuel de l'animation. Lorsque l'état de l'animation change, QAbstractAnimation émet le signal stateChanged().

Remarque : les mises à jourd’état peuvent entraîner des mises à jour de la propriété currentTime, ce qui peut à son tour annuler ses liaisons. Soyez donc prudent lorsque vous définissez des liaisons sur la propriété currentTime, si vous vous attendez à ce que l’état de l’animation change.

Fonctions d’accès :

QAbstractAnimation::State state() const

Signal de notification :

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

Documentation des fonctions membres

QAbstractAnimation::QAbstractAnimation(QObject *parent = nullptr)

Crée l'instance de la classe de base `QAbstractAnimation` et transmet ` parent ` au constructeur de ` QObject`.

Voir également QVariantAnimation et QAnimationGroup.

[virtual noexcept] QAbstractAnimation::~QAbstractAnimation()

Arrête l'animation si elle est en cours, puis détruit l'QAbstractAnimation. Si l'animation fait partie d'un QAnimationGroup, elle est automatiquement supprimée avant la destruction de ce dernier.

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

QAbstractAnimation émet ce signal chaque fois que la boucle de courant change. currentLoop correspond à la boucle de courant.

Remarque : signalde notification pour la propriété currentLoop.

Voir également currentLoop() et loopCount().

int QAbstractAnimation::currentLoopTime() const

Renvoie l'heure actuelle à l'intérieur de la boucle en cours. Elle peut aller de 0 à duration().

Voir également duration() et currentTime.

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

QAbstractAnimation émet ce signal chaque fois que la direction a été modifiée. newDirection correspond à la nouvelle direction.

Remarque : signalde notification pour la propriété direction.

Voir également direction.

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

Cette fonction purement virtuelle renvoie la durée de l'animation et définit pendant combien de temps ` QAbstractAnimation ` doit mettre à jour l'heure actuelle. Cette durée est locale et n'inclut pas le nombre de boucles.

Une valeur de retour égale à -1 indique que l'animation n'a pas de durée définie ; l'animation doit alors s'exécuter indéfiniment jusqu'à ce qu'elle soit arrêtée. Cela est utile pour les animations qui ne sont pas pilotées par le temps, ou dont la durée est difficile à prévoir (par exemple, la lecture audio déclenchée par des événements dans un jeu).

Si l’animation est une animation parallèle ( QAnimationGroup), la durée correspondra à la plus longue durée de toutes ses animations. Si l’animation est une animation séquentielle ( QAnimationGroup), la durée correspondra à la somme des durées de toutes ses animations.

Remarque : fonctiongetter pour la propriété duration.

Voir également loopCount.

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

Réimplémente : QObject::event(QEvent *e).

[signal] void QAbstractAnimation::finished()

QAbstractAnimation émet ce signal une fois que l'animation s'est arrêtée et qu'elle est arrivée à la fin.

Ce signal est émis après l'appel de la fonction ` stateChanged()`.

Voir également stateChanged().

QAnimationGroup *QAbstractAnimation::group() const

Si cette animation fait partie d'un groupe ( QAnimationGroup), cette fonction renvoie un pointeur vers ce groupe ; sinon, elle renvoie « nullptr ».

Voir également QAnimationGroup::addAnimation().

[slot] void QAbstractAnimation::pause()

Met l'animation en pause. Lorsque l'animation est en pause, la méthode state() renvoie la valeur « Paused ». La valeur de currentTime restera inchangée jusqu'à ce que la méthode resume() ou start() soit appelée. Si vous souhaitez reprendre l'animation à partir du moment actuel, appelez la méthode resume().

Voir également start(), state() et resume().

[slot] void QAbstractAnimation::resume()

Reprend l'animation après une mise en pause. Lorsque l'animation reprend, elle émet le signal stateChanged(). La propriété currentTime n'est pas modifiée.

Voir également start(), pause() et state().

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

Si paused est vrai, l'animation est mise en pause. Si paused est faux, l'animation reprend.

Voir également state(), pause() et resume().

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

Lance l’animation. L’argument ` policy ` indique si l’animation doit être supprimée ou non une fois terminée. Lorsque l’animation démarre, le signal ` stateChanged()` est émis, et ` state()` renvoie la valeur « Running ». Lorsque le contrôle revient à la boucle d’événements, l’animation s’exécute de manière autonome, en appelant périodiquement ` updateCurrentTime()` au fur et à mesure de sa progression.

Si l’animation est actuellement arrêtée ou a déjà atteint sa fin, l’appel à start() la rembobinera et la relancera depuis le début. Lorsque l’animation atteint sa fin, elle s’arrête, ou si le niveau de boucle est supérieur à 1, elle est rembobinée et reprend depuis le début.

Si l’animation est déjà en cours d’exécution, cette fonction ne fait rien.

Voir également stop() et state().

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

QAbstractAnimation émet ce signal chaque fois que l'état de l'animation passe de « oldState » à « newState ». Ce signal est émis après l'appel de la fonction virtuelle updateState().

Remarque : signalde notification pour la propriété state.

Voir également updateState().

[slot] void QAbstractAnimation::stop()

Arrête l'animation. Lorsque l'animation est arrêtée, elle émet le signal ` stateChanged()`, et la méthode ` state()` renvoie la valeur « Stopped ». L'heure actuelle n'est pas modifiée.

Si l'animation s'arrête d'elle-même après avoir atteint la fin (c'est-à-dire lorsque currentLoopTime() == duration() et currentLoop() > loopCount() - 1), le signal finished() est émis.

Voir également start() et state().

int QAbstractAnimation::totalDuration() const

Renvoie la durée totale et la durée effective de l'animation, y compris le nombre de boucles.

Remarque : si le nombre de boucles est très élevé, ou si la durée d’une seule boucle est trop longue, la durée totale peut être trop importante pour tenir dans un entier de type ` int`. Dans ce cas, la valeur est saturée à ` INT_MAX`.

Voir également ` duration()` et ` currentTime`.

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

Cette fonction purement virtuelle est appelée chaque fois que l'currentTime de l'animation change.

Voir également updateState().

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

Cette fonction virtuelle est appelée par QAbstractAnimation lorsque la direction de l'animation est modifiée. L'argument direction correspond à la nouvelle direction.

Voir également setDirection() et direction().

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

Cette fonction virtuelle est appelée par QAbstractAnimation lorsque l'état de l'animation passe de oldState à newState.

Voir également start(), stop(), pause() et 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.