Sur cette page

QPropertyAnimation Class

La classe QPropertyAnimation anime les propriétés Qt. Plus d'informations...

En-tête : #include <QPropertyAnimation>
CMake : find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake : QT += core
Héritages : 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 interpole les propriétés Qt. Comme les valeurs des propriétés sont stockées dans QVariants, la classe hérite de QVariantAnimation, et prend en charge l'animation de la même meta types que sa super-classe.

Une classe déclarant des propriétés doit être une classe QObject. Pour permettre l'animation d'une propriété, elle doit fournir un setter (de sorte que QPropertyAnimation puisse définir la valeur de la propriété). Notez que cela permet d'animer de nombreux widgets de 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();
}

Note : Vous pouvez également contrôler la durée de vie d'une animation en choisissant un delete policy lors du démarrage de l'animation.

Le nom de la propriété et l'instance QObject de la propriété à animer sont transmis au constructeur. Vous pouvez ensuite spécifier les valeurs de début et de fin de la propriété. La procédure est la même pour les propriétés des classes que vous avez vous-même implémentées - vérifiez simplement avec QVariantAnimation que votre type QVariant est pris en charge.

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

QPropertyAnimation fonctionne très bien tout seul. Pour les animations complexes qui, par exemple, contiennent plusieurs objets, QAnimationGroup est fourni. Un groupe d'animation est une animation qui peut contenir d'autres animations et qui peut gérer le moment où ses animations sont jouées. Voir QParallelAnimationGroup pour 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 liens QProperty.

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

Cette propriété définit le nom de la propriété cible pour cette animation. Le nom de la propriété est nécessaire au fonctionnement de l'animation.

Fonctions d'accès :

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

[bindable] targetObject : QObject*

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

Cette propriété contient la cible QObject pour cette animation.

Cette propriété définit la cible QObject pour cette animation.

Fonctions d'accès :

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

Documentation des fonctions membres

QPropertyAnimation::QPropertyAnimation(QObject *parent = nullptr)

Construit un objet QPropertyAnimation. parent est transmis au constructeur de QObject.

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

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

Voir également targetObject et propertyName.

[virtual noexcept] QPropertyAnimation::~QPropertyAnimation()

Détruit l'instance 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 courante 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 l'adresse 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 de 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.