QTimeLine Class
La classe QTimeLine fournit une ligne de temps pour contrôler les animations. Plus d'informations...
| En-tête : | #include <QTimeLine> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake : | QT += core |
| Héritages : | QObject |
- Liste de tous les membres, y compris les membres hérités
- QTimeLine fait partie de Animation Framework.
Types publics
Propriétés
|
|
Fonctions publiques
| QTimeLine(int duration = 1000, QObject *parent = nullptr) | |
| virtual | ~QTimeLine() |
| QBindable<int> | bindableCurrentTime() |
| QBindable<QTimeLine::Direction> | bindableDirection() |
| QBindable<int> | bindableDuration() |
| QBindable<QEasingCurve> | bindableEasingCurve() |
| QBindable<int> | bindableLoopCount() |
| QBindable<int> | bindableUpdateInterval() |
| int | currentFrame() const |
| int | currentTime() const |
| qreal | currentValue() const |
| QTimeLine::Direction | direction() const |
| int | duration() const |
| QEasingCurve | easingCurve() const |
| int | endFrame() const |
| int | frameForTime(int msec) const |
| int | loopCount() const |
| void | setDirection(QTimeLine::Direction direction) |
| void | setDuration(int duration) |
| void | setEasingCurve(const QEasingCurve &curve) |
| void | setEndFrame(int frame) |
| void | setFrameRange(int startFrame, int endFrame) |
| void | setLoopCount(int count) |
| void | setStartFrame(int frame) |
| void | setUpdateInterval(int interval) |
| int | startFrame() const |
| QTimeLine::State | state() const |
| int | updateInterval() const |
| virtual qreal | valueForTime(int msec) const |
Emplacements publics
| void | resume() |
| void | setCurrentTime(int msec) |
| void | setPaused(bool paused) |
| void | start() |
| void | stop() |
| void | toggleDirection() |
Signaux
| void | finished() |
| void | frameChanged(int frame) |
| void | stateChanged(QTimeLine::State newState) |
| void | valueChanged(qreal value) |
Fonctions protégées réimplémentées
| virtual void | timerEvent(QTimerEvent *event) override |
Description détaillée
Elle est le plus souvent utilisée pour animer un contrôle d'interface graphique en appelant périodiquement un slot. Vous pouvez construire une ligne de temps en passant sa durée en millisecondes au constructeur de QTimeLine. La durée de la ligne de temps décrit la durée de l'animation. Ensuite, vous définissez une plage d'images appropriée en appelant setFrameRange(). Enfin, connectez le signal frameChanged() à un emplacement approprié dans le widget que vous souhaitez animer (par exemple, setValue() dans QProgressBar). Lorsque vous appelez start(), QTimeLine entre dans l'état Running et commence à émettre frameChanged() à intervalles réguliers, ce qui fait que la valeur de la propriété connectée de votre widget augmente de l'extrémité inférieure à l'extrémité supérieure de votre plage d'images, à un rythme régulier. Vous pouvez spécifier l'intervalle de mise à jour en appelant setUpdateInterval(). Lorsque cela est fait, QTimeLine entre dans l'état NotRunning et émet finished().
Exemple :
//... auto progressBar = new QProgressBar(this); progressBar->setRange(0, 100); // Construct a 1-second timeline with a frame range of 0 - 100 QTimeLine *timeLine = new QTimeLine(1000, this); timeLine->setFrameRange(0, 100); connect(timeLine, &QTimeLine::frameChanged, progressBar, &QProgressBar::setValue); // Clicking the push button will start the progress bar animation auto pushButton = new QPushButton(tr("Start animation"), this); connect(pushButton, &QPushButton::clicked, timeLine, &QTimeLine::start); //...
Par défaut, la ligne de temps s'exécute une fois, du début à la fin, après quoi vous devez appeler à nouveau start() pour recommencer depuis le début. Pour que la ligne temporelle tourne en boucle, vous pouvez appeler setLoopCount(), en indiquant le nombre de fois que la ligne temporelle doit s'exécuter avant de se terminer. La direction peut également être modifiée, ce qui fait reculer la ligne temporelle, en appelant setDirection(). Il est également possible de mettre en pause et de remettre en pause la ligne de temps en cours d'exécution en appelant setPaused(). Pour un contrôle interactif, la fonction setCurrentTime() est fournie, qui définit directement la position temporelle de la ligne de temps. Bien qu'elle soit surtout utile dans l'état NotRunning (par exemple, connectée à un signal valueChanged() dans un QSlider), cette fonction peut être appelée à tout moment.
L'interface frame est utile pour les widgets standard, mais QTimeLine peut être utilisé pour contrôler n'importe quel type d'animation. Le cœur de QTimeLine réside dans la fonction valueForTime(), qui génère une valeur comprise entre 0 et 1 pour un temps donné. Cette valeur est généralement utilisée pour décrire les étapes d'une animation, 0 étant la première étape de l'animation et 1 la dernière étape. Lors de son exécution, QTimeLine génère des valeurs entre 0 et 1 en appelant valueForTime() et en émettant valueChanged(). Par défaut, valueForTime() applique un algorithme d'interpolation pour générer ces valeurs. Vous pouvez choisir parmi un ensemble d'algorithmes prédéfinis en appelant setEasingCurve().
Notez que, par défaut, QTimeLine utilise QEasingCurve::InOutSine, qui fournit une valeur qui croît lentement, puis régulièrement, et enfin lentement. Pour une ligne de temps personnalisée, vous pouvez réimplémenter valueForTime(), auquel cas la propriété easingCurve de QTimeLine est ignorée.
Voir également QProgressBar et QProgressDialog.
Documentation sur les types de membres
enum QTimeLine::Direction
Cette énumération décrit la direction de la ligne de temps lorsqu'elle se trouve à l'état Running.
| Constante | Valeur | Description |
|---|---|---|
QTimeLine::Forward | 0 | L'heure actuelle de la ligne de temps augmente avec le temps (c'est-à-dire qu'elle part de 0 et se rapproche de la fin / durée). |
QTimeLine::Backward | 1 | L'heure actuelle de la ligne de temps diminue avec le temps (c'est-à-dire qu'elle s'éloigne de la fin / durée et se rapproche de 0). |
Voir également setDirection().
enum QTimeLine::State
Cette énumération décrit l'état de la ligne de temps.
| Constante | Valeur | Description de l'état de la ligne de temps |
|---|---|---|
QTimeLine::NotRunning | 0 | La ligne de temps n'est pas en cours d'exécution. Il s'agit de l'état initial de QTimeLine et de l'état dans lequel QTimeLine se trouve lorsqu'il est terminé. L'heure, la trame et la valeur actuelles restent inchangées jusqu'à ce que setCurrentTime() soit appelé ou que la ligne temporelle soit démarrée en appelant start(). |
QTimeLine::Paused | 1 | La ligne du temps est en pause (c'est-à-dire qu'elle est temporairement suspendue). L'appel à setPaused(false) reprend l'activité de la ligne de temps. |
QTimeLine::Running | 2 | La ligne de temps est en cours d'exécution. Tant que le contrôle est dans la boucle d'événements, QTimeLine met à jour l'heure actuelle à intervalles réguliers, en émettant valueChanged() et frameChanged() le cas échéant. |
Voir également state() et stateChanged().
Documentation sur les propriétés
[bindable] currentTime : int
Remarque : Cette propriété prend en charge les liaisons QProperty.
Cette propriété contient l'heure actuelle de la ligne temporelle.
Lorsque QTimeLine est en cours d'exécution, cette valeur est mise à jour en permanence en fonction de la durée et de la direction de la ligne de temps. Dans le cas contraire, il s'agit de la valeur actuelle lorsque stop() a été appelé pour la dernière fois, ou de la valeur définie par setCurrentTime().
Remarque : il est possible de lier d'autres propriétés à currentTime, mais il n'est pas recommandé de le faire. Au fur et à mesure que l'animation progresse, l'heure actuelle est mise à jour automatiquement, ce qui annule ses liaisons.
Par défaut, cette propriété contient une valeur de 0.
Fonctions d'accès :
| int | currentTime() const |
| void | setCurrentTime(int msec) |
[bindable] direction : Direction
Remarque : Cette propriété prend en charge les liens QProperty.
Cette propriété indique la direction de la ligne de temps lorsque QTimeLine est dans l'état Running.
Cette direction indique si le temps se déplace de 0 vers la durée de la ligne temporelle, ou de la valeur de la durée vers 0 après que start() a été appelé.
Toute liaison de la direction sera supprimée non seulement par setDirection(), mais aussi par toggleDirection().
Par défaut, cette propriété est définie sur Forward.
Fonctions d'accès :
| QTimeLine::Direction | direction() const |
| void | setDirection(QTimeLine::Direction direction) |
[bindable] duration : int
Remarque : Cette propriété prend en charge les liens QProperty.
Cette propriété indique la durée totale de la ligne de temps en millisecondes.
Par défaut, cette valeur est de 1000 (c'est-à-dire 1 seconde), mais vous pouvez la modifier en passant une durée au constructeur de QTimeLine ou en appelant setDuration(). La durée doit être supérieure à 0.
Remarque : la modification de la durée n'entraîne pas la remise à zéro de l'heure actuelle ou de la nouvelle durée. Vous devez également appeler setCurrentTime() avec la valeur souhaitée.
Fonctions d'accès :
| int | duration() const |
| void | setDuration(int duration) |
[bindable] easingCurve : QEasingCurve
Remarque : cette propriété prend en charge les liaisons QProperty.
Spécifie la courbe d'assouplissement utilisée par la ligne de temps. Si valueForTime() est réimplémenté, cette valeur est ignorée.
Fonctions d'accès :
| QEasingCurve | easingCurve() const |
| void | setEasingCurve(const QEasingCurve &curve) |
Voir également valueForTime().
[bindable] loopCount : int
Remarque : Cette propriété prend en charge les liens QProperty.
Cette propriété indique le nombre de fois que la ligne de temps doit être bouclée avant d'être terminée.
Un nombre de boucles égal à 0 signifie que la ligne de temps est bouclée à l'infini.
Par défaut, cette propriété contient une valeur de 1.
Fonctions d'accès :
| int | loopCount() const |
| void | setLoopCount(int count) |
[bindable] updateInterval : int
Remarque : Cette propriété prend en charge les liens QProperty.
Cette propriété indique le temps en millisecondes entre chaque mise à jour de l'heure actuelle par QTimeLine.
Lors de la mise à jour de l'heure actuelle, QTimeLine émettra valueChanged() si la valeur actuelle a changé, et frameChanged() si la trame a changé.
Par défaut, l'intervalle est de 40 ms, ce qui correspond à un taux de 25 mises à jour par seconde.
Fonctions d'accès :
| int | updateInterval() const |
| void | setUpdateInterval(int interval) |
Documentation des fonctions membres
[explicit] QTimeLine::QTimeLine(int duration = 1000, QObject *parent = nullptr)
Construit une ligne de temps d'une durée de duration millisecondes. parent est transmis au constructeur de QObject. La durée par défaut est de 1000 millisecondes.
[virtual noexcept] QTimeLine::~QTimeLine()
Détruit la ligne temporelle.
int QTimeLine::currentFrame() const
Renvoie la trame correspondant à l'heure actuelle.
Voir aussi currentTime(), frameForTime() et setFrameRange().
qreal QTimeLine::currentValue() const
Renvoie la valeur correspondant à l'heure actuelle.
Voir aussi valueForTime() et currentFrame().
int QTimeLine::endFrame() const
Renvoie l'image de fin, c'est-à-dire l'image correspondant à la fin de la ligne de temps (c'est-à-dire l'image pour laquelle la valeur actuelle est 1).
Voir également setEndFrame() et setFrameRange().
[private signal] void QTimeLine::finished()
Ce signal est émis lorsque QTimeLine se termine (c'est-à-dire qu'il atteint la fin de sa ligne temporelle), et ne boucle pas.
Remarque : il s'agit d'un signal privé. Il peut être utilisé dans les connexions de signaux, mais ne peut pas être émis par l'utilisateur.
[private signal] void QTimeLine::frameChanged(int frame)
QTimeLine émet ce signal à intervalles réguliers lorsqu'il est dans l'état Running, mais uniquement si la trame en cours change. frame est le numéro de la trame en cours.
Remarque : il s'agit d'un signal privé. Il peut être utilisé dans les connexions de signaux mais ne peut pas être émis par l'utilisateur.
Voir aussi QTimeLine::setFrameRange() et QTimeLine::updateInterval.
int QTimeLine::frameForTime(int msec) const
Renvoie la trame correspondant au temps msec. Cette valeur est calculée à l'aide d'une interpolation linéaire des images de début et de fin, sur la base de la valeur renvoyée par valueForTime().
Voir aussi valueForTime() et setFrameRange().
[slot] void QTimeLine::resume()
Reprend la ligne de temps à partir de l'heure actuelle. QTimeLine réintègre l'état Running et, une fois qu'il entre dans la boucle événementielle, il met à jour l'heure, la trame et la valeur à intervalles réguliers.
Contrairement à start(), cette fonction ne redémarre pas la ligne de temps avant de reprendre.
Voir également start(), updateInterval(), frameChanged() et valueChanged().
void QTimeLine::setEndFrame(int frame)
Définit l'image de fin, qui est l'image correspondant à la fin de la ligne de temps (c'est-à-dire l'image pour laquelle la valeur actuelle est 1), à frame.
Voir également endFrame(), startFrame() et setFrameRange().
void QTimeLine::setFrameRange(int startFrame, int endFrame)
Définit le compteur d'images de la ligne de temps pour qu'il commence à startFrame, et se termine à endFrame. Pour chaque valeur temporelle, QTimeLine trouvera l'image correspondante lorsque vous appellerez currentFrame() ou frameForTime() par interpolation, en utilisant la valeur de retour de valueForTime().
Lorsqu'il est en état de fonctionnement, QTimeLine émet également le signal frameChanged() lorsque la trame change.
Voir aussi startFrame(), endFrame(), start() et currentFrame().
[slot] void QTimeLine::setPaused(bool paused)
Si paused est vrai, la ligne de temps est mise en pause, ce qui entraîne l'entrée de QTimeLine dans l'état Paused. Aucune mise à jour ne sera signalée jusqu'à ce que start() ou setPaused(false) soit appelé. Si paused est faux, la ligne de temps est reprise et continue là où elle s'est arrêtée.
Voir aussi state() et start().
void QTimeLine::setStartFrame(int frame)
Définit l'image de départ, qui est l'image correspondant au début de la ligne de temps (c'est-à-dire l'image pour laquelle la valeur actuelle est 0), à frame.
Voir également startFrame(), endFrame() et setFrameRange().
[slot] void QTimeLine::start()
Lance la ligne de temps. QTimeLine entre dans l'état "Running" et, une fois qu'il entre dans la boucle d'événements, il met à jour l'heure, la trame et la valeur à intervalles réguliers. L'intervalle par défaut est de 40 ms (soit 25 fois par seconde). Vous pouvez modifier l'intervalle de mise à jour en appelant setUpdateInterval().
La ligne temporelle commence à la position 0, ou à la fin si l'on revient en arrière. Si vous souhaitez reprendre une ligne temporelle arrêtée sans la redémarrer, vous pouvez appeler resume() à la place.
Voir aussi resume(), updateInterval(), frameChanged(), et valueChanged().
int QTimeLine::startFrame() const
Renvoie l'image de départ, c'est-à-dire l'image correspondant au début de la ligne de temps (c'est-à-dire l'image pour laquelle la valeur actuelle est 0).
Voir également setStartFrame() et setFrameRange().
QTimeLine::State QTimeLine::state() const
Renvoie l'état de la ligne de temps.
Voir aussi start(), setPaused(), et stop().
[private signal] void QTimeLine::stateChanged(QTimeLine::State newState)
Ce signal est émis lorsque l'état de QTimeLine change. Le nouvel état est newState.
Remarque : il s'agit d'un signal privé. Il peut être utilisé dans les connexions de signaux mais ne peut pas être émis par l'utilisateur.
[slot] void QTimeLine::stop()
Arrête la ligne de temps, faisant passer QTimeLine à l'état NotRunning.
Voir aussi start().
[override virtual protected] void QTimeLine::timerEvent(QTimerEvent *event)
Réimplémente : QObject::timerEvent(QTimerEvent *event).
[slot] void QTimeLine::toggleDirection()
Change la direction de la ligne de temps. Si la direction était Forward, elle devient Backward, et vice versa.
Les liaisons existantes de direction sont supprimées.
Voir aussi setDirection().
[private signal] void QTimeLine::valueChanged(qreal value)
QTimeLine émet ce signal à intervalles réguliers lorsqu'il est dans l'état Running, mais seulement si la valeur actuelle change. value est la valeur actuelle. value est un nombre entre 0.0 et 1.0
Remarque : il s'agit d'un signal privé. Il peut être utilisé dans des connexions de signaux mais ne peut pas être émis par l'utilisateur.
Voir aussi QTimeLine::setDuration(), QTimeLine::valueForTime() et QTimeLine::updateInterval.
[virtual] qreal QTimeLine::valueForTime(int msec) const
Renvoie la valeur de la ligne de temps pour le temps msec. La valeur renvoyée, qui varie en fonction de la forme de la courbe, est toujours comprise entre 0 et 1. Si msec est 0, l'implémentation par défaut renvoie toujours 0.
Réimplémentez cette fonction pour obtenir une forme de courbe personnalisée pour votre ligne de temps.
Voir également easingCurve et frameForTime().
© 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.