Sur cette page

QPropertyAnimation Class

La classe `QPropertyAnimation` permet d'animer les propriétés Qt. En savoir plus...

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

Propriétés

Fonctions publiques

QPropertyAnimation(QObject *parent = nullptr)
QPropertyAnimation(QObject *target, const QByteArray &propertyName, QObject *parent = nullptr)
virtual ~QPropertyAnimation()
QBindable<QByteArray> bindablePropertyName()
QBindable<QObject *> bindableTargetObject()
QByteArray propertyName() const
void setPropertyName(const QByteArray &propertyName)
void setTargetObject(QObject *target)
QObject *targetObject() const

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

virtual bool event(QEvent *event) override
virtual void updateCurrentValue(const QVariant &value) override
virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState) override

Description détaillée

QPropertyAnimation effectue une interpolation sur les propriétés Qt. Les valeurs des propriétés étant stockées dans des objets de type ` QVariant`, la classe hérite de ` QVariantAnimation` et prend en charge l'animation des mêmes ` meta types ` que sa classe parente.

Une classe déclarant des propriétés doit être une classe de type « QObject ». Pour permettre l'animation d'une propriété, elle doit fournir un setter (afin que QPropertyAnimation puisse définir la valeur de la propriété). Notez que cela permet d'animer de nombreux Qt Widgets. Voyons un exemple :

#include <QApplication>
#include <QPushButton>
#include <QPropertyAnimation>

class MyButtonWidget : public QWidget
{
public:
    MyButtonWidget(QWidget *parent = nullptr);
};

MyButtonWidget::MyButtonWidget(QWidget *parent) : QWidget(parent)
{
    QPushButton *button = new QPushButton(tr("Animated Button"), this);
    QPropertyAnimation *anim = new QPropertyAnimation(button, "pos", this);
    anim->setDuration(10000);
    anim->setStartValue(QPoint(0, 0));
    anim->setEndValue(QPoint(100, 250));
    anim->start();
}

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MyButtonWidget buttonAnimWidget;
    buttonAnimWidget.resize(QSize(800, 600));
    buttonAnimWidget.show();
    return a.exec();
}

Remarque : vous pouvez également contrôler la durée d’une animation en choisissant une instance de ` delete policy ` lors du lancement de l’animation.

Le nom de la propriété et l’instance d’ QObject correspondant à la propriété à animer sont transmis au constructeur. Vous pouvez ensuite spécifier les valeurs de départ et de fin de la propriété. La procédure est identique pour les propriétés des classes que vous avez implémentées vous-même : il suffit de vérifier sur QVariantAnimation que votre type d’ QVariant est pris en charge.

La description de la classe ` QVariantAnimation ` explique en détail comment configurer l’animation. Notez toutefois que si aucune valeur de départ n’est définie, la propriété commencera à la valeur qu’elle avait lors de la création de l’instance de `QPropertyAnimation`.

QPropertyAnimation fonctionne à merveille en soi. Pour les animations complexes qui, par exemple, contiennent plusieurs objets, QAnimationGroup est fourni. Un groupe d’animations est une animation qui peut contenir d’autres animations et qui peut gérer le moment où celles-ci sont lues. Consultez QParallelAnimationGroup pour voir un exemple.

Voir également QVariantAnimation, QAnimationGroup et The Animation Framework.

Documentation sur les propriétés

[bindable] propertyName : QByteArray

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

Cette propriété contient le nom de la propriété cible de cette animation

Cette propriété définit le nom de la propriété cible de cette animation. Le nom de la propriété est obligatoire pour que l'animation fonctionne.

Fonctions d'accès :

QByteArray propertyName() const
void setPropertyName(const QByteArray &propertyName)

[bindable] targetObject : QObject*

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

Cette propriété contient l'QObject cible de cette animation.

Cette propriété définit l'QObject cible de cette animation.

Fonctions d'accès :

QObject *targetObject() const
void setTargetObject(QObject *target)

Documentation sur les fonctions membres

QPropertyAnimation::QPropertyAnimation(QObject *parent = nullptr)

Créez un objet `QPropertyAnimation`. L'parent ` est transmis au constructeur de ` QObject`.

QPropertyAnimation::QPropertyAnimation(QObject *target, const QByteArray &propertyName, QObject *parent = nullptr)

Créez un objet `QPropertyAnimation`. ` parent ` est transmis au constructeur de ` QObject`. L'animation modifie la propriété ` propertyName ` de ` target`. La durée par défaut est de 250 ms.

Voir également targetObject et propertyName.

[virtual noexcept] QPropertyAnimation::~QPropertyAnimation()

Supprime l'instance de ` QPropertyAnimation `.

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

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

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

Réimplémente : QVariantAnimation::updateCurrentValue(const QVariant &value).

Cette fonction virtuelle est appelée par ` QVariantAnimation ` chaque fois que la valeur actuelle change. ` value ` est la nouvelle valeur mise à jour. Elle met à jour la valeur actuelle de la propriété sur l'objet cible, sauf si l'animation est arrêtée.

Voir également currentValue et currentTime.

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

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

Si la méthode startValue n'est pas définie lorsque l'état de l'animation passe de Stopped à Running, la valeur actuelle de la propriété est utilisée comme valeur initiale pour l'animation.

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