Sur cette page

QVariantAnimation Class

La classe QVariantAnimation est une classe de base pour les animations. Plus d'informations...

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

QPropertyAnimation

Types publics

Propriétés

Fonctions publiques

QVariantAnimation(QObject *parent = nullptr)
virtual ~QVariantAnimation()
QBindable<int> bindableDuration()
QBindable<QEasingCurve> bindableEasingCurve()
QVariant currentValue() const
virtual int duration() const override
QEasingCurve easingCurve() const
QVariant endValue() const
QVariant keyValueAt(qreal step) const
QVariantAnimation::KeyValues keyValues() const
void setDuration(int msecs)
void setEasingCurve(const QEasingCurve &easing)
void setEndValue(const QVariant &value)
void setKeyValueAt(qreal step, const QVariant &value)
void setKeyValues(const QVariantAnimation::KeyValues &keyValues)
void setStartValue(const QVariant &value)
QVariant startValue() const

Signaux

void valueChanged(const QVariant &value)

Fonctions protégées

virtual QVariant interpolated(const QVariant &from, const QVariant &to, qreal progress) const
virtual void updateCurrentValue(const QVariant &value)

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

virtual bool event(QEvent *event) override
virtual void updateCurrentTime(int) override
virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState) override
void qRegisterAnimationInterpolator(QVariant (*)(const T &, const T &, qreal) func)

Description détaillée

Cette classe fait partie du cadre d'animation. Elle sert de classe de base pour les animations de propriétés et d'éléments, avec des fonctions partagées.

La classe effectue une interpolation sur QVariants, mais laisse l'utilisation des valeurs interpolées à ses sous-classes. Actuellement, Qt fournit QPropertyAnimation, qui anime les propriétés Qt. Consultez la description de la classe QPropertyAnimation si vous souhaitez animer de telles propriétés.

Vous pouvez ensuite définir les valeurs de début et de fin de la propriété en appelant setStartValue() et setEndValue(), et enfin appeler start() pour démarrer l'animation. QVariantAnimation interpolera la propriété de l'objet cible et émettra valueChanged(). Pour réagir à un changement de la valeur courante, vous devez réimplémenter la fonction virtuelle updateCurrentValue() ou vous connecter à ce signal.

Il est également possible de définir des valeurs à des étapes spécifiques situées entre la valeur de départ et la valeur finale. L'interpolation touchera alors ces points aux pas spécifiés. Notez que les valeurs de départ et d'arrivée sont définies comme les valeurs clés de 0,0 et 1,0.

Il existe deux façons d'affecter la manière dont QVariantAnimation interpole les valeurs. Vous pouvez définir une courbe d'assouplissement en appelant setEasingCurve() et configurer la durée en appelant setDuration(). Vous pouvez modifier la façon dont les QVariantsont interpolés en créant une sous-classe de QVariantAnimation et en réimplémentant la fonction virtuelle interpolated().

La sous-classe QVariantAnimation peut être une alternative si vous avez des QVariants que vous ne souhaitez pas déclarer en tant que propriétés Qt. Notez cependant que dans la plupart des cas, il est préférable de déclarer votre QVariant comme une propriété.

Tous les types de QVariant ne sont pas pris en charge. Vous trouverez ci-dessous une liste des types QVariant actuellement pris en charge :

Si vous avez besoin d'interpoler d'autres types de variantes, y compris des types personnalisés, vous devez mettre en œuvre l'interpolation pour ces types vous-même. Pour ce faire, vous pouvez enregistrer une fonction d'interpolation pour un type donné. Cette fonction prend 3 paramètres : la valeur de départ, la valeur d'arrivée et la progression actuelle.

Exemple d'interpolation :

QVariant myColorInterpolator(const QColor &start, const QColor&end, qreal progress) { // ... return QColor(/*...*/) ; }// ...void someFunc() { // ...    qRegisterAnimationInterpolator<QColor>(myColorInterpolator);
   // ...}

Une autre option consiste à réimplémenter interpolated(), qui renvoie des valeurs d'interpolation pour la valeur interpolée.

Voir également QPropertyAnimation, QAbstractAnimation, et The Animation Framework.

Documentation sur les types de membres

[alias] QVariantAnimation::KeyValue

Il s'agit d'un typedef pour std::pair<qreal, QVariant>.

QVariantAnimation::KeyValues

Il s'agit d'un typedef pour QList<KeyValue>

Documentation sur les propriétés

[read-only] currentValue : QVariant

Cette propriété contient la valeur actuelle de l'animation.

Cette propriété décrit la valeur actuelle ; une valeur interpolée entre start value et end value, en utilisant l'heure actuelle pour la progression. La valeur elle-même est obtenue à partir de la fonction interpolated(), qui est appelée à plusieurs reprises pendant le déroulement de l'animation.

QVariantAnimation appelle la fonction virtuelle updateCurrentValue() lorsque la valeur courante change. Cette fonction est particulièrement utile pour les sous-classes qui doivent suivre les mises à jour. Par exemple, QPropertyAnimation utilise cette fonction pour animer les propriétés Qt.

Fonctions d'accès :

QVariant currentValue() const

Signal Notifier :

void valueChanged(const QVariant &value)

Voir aussi startValue et endValue.

[bindable] duration : int

Remarque : Cette propriété prend en charge les liens QProperty.

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

Cette propriété décrit la durée en millisecondes de l'animation. La durée par défaut est de 250 millisecondes.

Fonctions d'accès :

virtual int duration() const override
void setDuration(int msecs)

Voir également QAbstractAnimation::duration().

[bindable] easingCurve : QEasingCurve

Remarque : Cette propriété prend en charge les liens QProperty.

Cette propriété définit la courbe d'assouplissement de l'animation

Cette propriété définit la courbe d'assouplissement de l'animation. Par défaut, une courbe d'assouplissement linéaire est utilisée, ce qui entraîne une interpolation linéaire. D'autres courbes sont disponibles, par exemple, QEasingCurve::InCirc, qui fournit une courbe d'entrée circulaire. Un autre exemple est QEasingCurve::InOutElastic, qui fournit un effet élastique sur les valeurs de la variante interpolée.

QVariantAnimation utilisera QEasingCurve::valueForProgress() pour transformer la "progression normalisée" (currentTime() / totalDuration()) de l'animation en progression effective réellement utilisée par l'animation. C'est cette progression effective qui sera la progression lorsque interpolated() sera appelé. De même, les étapes du site keyValues se réfèrent à cette progression effective.

La courbe d'assouplissement est utilisée avec l'interpolateur, la fonction virtuelle interpolated() et la durée de l'animation pour contrôler la façon dont la valeur actuelle change au fur et à mesure que l'animation progresse.

Fonctions d'accès :

QEasingCurve easingCurve() const
void setEasingCurve(const QEasingCurve &easing)

endValue : QVariant

Cette propriété décrit la valeur finale de l'animation

Cette propriété décrit la valeur finale de l'animation.

Fonctions d'accès :

QVariant endValue() const
void setEndValue(const QVariant &value)

Voir aussi startValue.

startValue : QVariant

Cette propriété décrit la valeur de départ optionnelle de l'animation

Cette propriété décrit la valeur de départ facultative de l'animation. Si elle est omise, ou si une valeur nulle QVariant est attribuée comme valeur de départ, l'animation utilisera la position actuelle de la fin lorsque l'animation est lancée.

Fonctions d'accès :

QVariant startValue() const
void setStartValue(const QVariant &value)

Voir également endValue.

Documentation sur les fonctions membres

QVariantAnimation::QVariantAnimation(QObject *parent = nullptr)

Construit un objet QVariantAnimation. parent est transmis au constructeur de QAbstractAnimation.

[virtual noexcept] QVariantAnimation::~QVariantAnimation()

Détruit l'animation.

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

Réimplémente : QAbstractAnimation::event(QEvent *event).

[virtual protected] QVariant QVariantAnimation::interpolated(const QVariant &from, const QVariant &to, qreal progress) const

Cette fonction virtuelle renvoie l'interpolation linéaire entre les variantes from et to, à progress, généralement une valeur comprise entre 0 et 1. Vous pouvez réimplémenter cette fonction dans une sous-classe de QVariantAnimation pour fournir votre propre algorithme d'interpolation.

Notez que pour que l'interpolation fonctionne avec un QEasingCurve qui renvoie une valeur inférieure à 0 ou supérieure à 1 (comme QEasingCurve::InBack), vous devez vous assurer qu'il peut extrapoler. Si la sémantique du type de données ne permet pas l'extrapolation, cette fonction doit le gérer avec élégance.

Vous devez appeler l'implémentation QVariantAnimation de cette fonction si vous voulez que votre classe gère les types déjà pris en charge par Qt XML (voir la description de la classe QVariantAnimation pour une liste des types pris en charge).

Voir aussi QEasingCurve.

QVariant QVariantAnimation::keyValueAt(qreal step) const

Renvoie la valeur de l'image clé pour l'adresse step donnée. L'adresse step doit être comprise entre 0 et 1. S'il n'y a pas de KeyValue pour step, il renvoie une adresse QVariant invalide.

Voir aussi keyValues() et setKeyValueAt().

QVariantAnimation::KeyValues QVariantAnimation::keyValues() const

Renvoie les images clés de cette animation.

Voir aussi keyValueAt() et setKeyValues().

void QVariantAnimation::setKeyValueAt(qreal step, const QVariant &value)

Crée une image clé à l'adresse step avec l'adresse value. L'adresse step doit être comprise entre 0 et 1.

Voir aussi setKeyValues() et keyValueAt().

void QVariantAnimation::setKeyValues(const QVariantAnimation::KeyValues &keyValues)

Remplace l'ensemble actuel d'images clés par l'image donnée keyValues. Le pas des images clés doit être compris entre 0 et 1.

Voir aussi keyValues() et keyValueAt().

[override virtual protected] void QVariantAnimation::updateCurrentTime(int)

Réimplémente : QAbstractAnimation::updateCurrentTime(int currentTime).

[virtual protected] void QVariantAnimation::updateCurrentValue(const QVariant &value)

Cette fonction virtuelle est appelée à chaque fois que la valeur courante de l'animation change. L'argument value est la nouvelle valeur courante.

L'implémentation de la classe de base ne fait rien.

Voir aussi currentValue.

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

Réimplémente : QAbstractAnimation::updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState).

[signal] void QVariantAnimation::valueChanged(const QVariant &value)

QVariantAnimation émet ce signal lorsque l'adresse value est modifiée.

Note : Signal de notification pour la propriété currentValue.

Voir également currentValue, startValue, et endValue.

Non-membres apparentés

template <typename T> void qRegisterAnimationInterpolator(QVariant (*)(const T &, const T &, qreal) func)

Enregistre un interpolateur personnalisé func pour le type de modèle T. L'interpolateur doit être enregistré avant que l'animation ne soit construite. Pour annuler l'enregistrement (et utiliser l'interpolateur par défaut), définissez func à nullptr.

Remarque : cette fonction est à l'épreuve des threads.

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