Sur cette page

QEasingCurve Class

La classe QEasingCurve fournit des courbes d'accélération permettant de contrôler les animations. En savoir plus...

En-tête : #include <QEasingCurve>
CMake : find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake : QT += core

Types publics

EasingFunction
enum Type { Linear, InQuad, OutQuad, InOutQuad, OutInQuad, …, Custom }

Fonctions publiques

QEasingCurve(QEasingCurve::Type type = Linear)
QEasingCurve(const QEasingCurve &other)
QEasingCurve(QEasingCurve &&other)
~QEasingCurve()
void addCubicBezierSegment(const QPointF &c1, const QPointF &c2, const QPointF &endPoint)
void addTCBSegment(const QPointF &nextPoint, qreal t, qreal c, qreal b)
qreal amplitude() const
QEasingCurve::EasingFunction customType() const
qreal overshoot() const
qreal period() const
void setAmplitude(qreal amplitude)
void setCustomType(QEasingCurve::EasingFunction func)
void setOvershoot(qreal overshoot)
void setPeriod(qreal period)
void setType(QEasingCurve::Type type)
void swap(QEasingCurve &other)
QList<QPointF> toCubicSpline() const
QEasingCurve::Type type() const
qreal valueForProgress(qreal progress) const
QEasingCurve &operator=(QEasingCurve &&other)
QEasingCurve &operator=(const QEasingCurve &other)

Membres publics statiques

(since 6.12) QEasingCurve fromCubicBezier(QPointF c1, QPointF c2)
bool operator!=(const QEasingCurve &lhs, const QEasingCurve &rhs)
QDataStream &operator<<(QDataStream &stream, const QEasingCurve &easing)
bool operator==(const QEasingCurve &lhs, const QEasingCurve &rhs)
QDataStream &operator>>(QDataStream &stream, QEasingCurve &easing)

Description détaillée

Les courbes d'accélération décrivent une fonction qui contrôle la vitesse de l'interpolation entre 0 et 1. Elles permettent d'obtenir des transitions d'une valeur à une autre plus naturelles qu'avec une vitesse constante. La classe `QEasingCurve` est généralement utilisée en association avec les classes ` QVariantAnimation ` et ` QPropertyAnimation `, mais peut également être utilisée seule. Elle sert généralement à accélérer l’interpolation à partir d’une vitesse nulle (accélération en entrée) ou à la ralentir jusqu’à une vitesse nulle (décélération en sortie). L’accélération en entrée et la décélération en sortie peuvent également être combinées au sein d’une même courbe d’accélération.

Pour calculer la vitesse de l'interpolation, la courbe d'accélération fournit la fonction valueForProgress(), où l'argument progress spécifie la progression de l'interpolation : 0 correspond à la valeur de départ de l'interpolation, 1 à la valeur finale de l'interpolation. La valeur renvoyée correspond à la progression effective de l’interpolation. Si la valeur renvoyée est identique à la valeur d’entrée pour toutes les valeurs d’entrée, la courbe d’accélération est une courbe linéaire. Il s’agit du comportement par défaut.

Par exemple,

QEasingCurve easing(QEasingCurve::InOutQuad);

for (qreal t = 0,0; t < 1,0; t+= 0,1)
    qWarning() << "Effective progress" << t << "is"
               << easing.valueForProgress(t);

affichera la progression effective de l'interpolation entre 0 et 1.

Lorsque vous utilisez un ` QPropertyAnimation`, la courbe d'accélération associée sera utilisée pour contrôler la progression de l'interpolation entre `startValue` et `endValue` :

QPropertyAnimation animation;
animation.setStartValue(0);
animation.setEndValue(1000);
animation.setDuration(1000);
animation.setEasingCurve(QEasingCurve::InOutQuad);

La possibilité de définir une amplitude, un dépassement ou une période dépend du type de QEasingCurve. L’accès à l’amplitude est disponible pour les courbes qui se comportent comme des ressorts, telles que les courbes élastiques et les courbes de rebond. La modification de l’amplitude modifie la hauteur de la courbe. L'accès à la période n'est disponible que pour les courbes élastiques ; définir une période plus longue ralentit la vitesse de rebond. Seules les courbes présentant un comportement de type « boomerang », telles que « InBack », « OutBack », « InOutBack » et « OutInBack », disposent de paramètres de dépassement. Ces courbes s'interpolent au-delà des points d'extrémité puis reviennent vers ceux-ci, à la manière d'un boomerang.

L'exemple « Easing Curves » contient des échantillons de types QEasingCurve et vous permet de modifier les paramètres des courbes.

Documentation sur les types de membres

QEasingCurve::EasingFunction

Il s'agit d'un `typedef` pour un pointeur vers une fonction ayant la signature suivante :

qreal myEasingFunction(qreal progress);

enum QEasingCurve::Type

Le type de courbe d'atténuation.

ConstanteValeur
QEasingCurve::Linear0

Représentation graphique d'une fonction linéaire.

Courbe d'atténuation pour une fonction linéaire (t) : la vitesse est constante.

ConstanteValeur
QEasingCurve::InQuad1

Graphique d'une fonction non quadratique.

Courbe d'accélération pour une fonction quadratique (t²) : accélération à partir d'une vitesse nulle.

ConstanteValeur
QEasingCurve::OutQuad2

Graphique d'une fonction quadratique

Courbe d'accélération/décélération pour une fonction quadratique (t²): décélération jusqu'à une vitesse nulle.

ConstanteValeur
QEasingCurve::InOutQuad3

Graphique d'une fonction quadratique de type InOutquad

Courbe d'accélération/décélération pour une fonction quadratique (t²): accélération jusqu'à mi-parcours, puis décélération.

ConstanteValeur
QEasingCurve::OutInQuad4

Graphique d'une fonction quadratique de type OutInquad

Courbe d'atténuation pour une fonction quadratique (t²): décélération jusqu'à mi-parcours, puis accélération.

ConstanteValeur
QEasingCurve::InCubic5

Graphique d'une fonction InCubic

Courbe d'accélération pour une fonction cubique (t³) : accélération à partir d'une vitesse nulle.

ConstanteValeur
QEasingCurve::OutCubic6

Graphique d'une fonction OutCubic

Courbe d'accélération pour une fonction cubique (t³) : décélération jusqu'à une vitesse nulle.

ConstanteValeur
QEasingCurve::InOutCubic7

Graphique d'une fonction InOutCubic.

Courbe d'accélération/décélération pour une fonction cubique (t³) : accélération jusqu'à mi-parcours, puis décélération.

ConstanteValeur
QEasingCurve::OutInCubic8

Graphique de la fonction OutInCubic.

Courbe d'atténuation pour une fonction cubique (t³) : décélération jusqu'à mi-parcours, puis accélération.

ConstanteValeur
QEasingCurve::InQuart9

Graphique d'une fonction InQuartic.

Courbe d'accélération pour une fonction de quatrième degré (t^4) : accélération à partir d'une vitesse nulle.

ConstanteValeur
QEasingCurve::OutQuart10

Graphique d'une fonction OutQuartic.

Courbe d'accélération pour une fonction du quatrième degré (t^4) : décélération jusqu’à une vitesse nulle.

ConstanteValeur
QEasingCurve::InOutQuart11

Graphique d'une fonction InOutQuartic.

Courbe d'accélération/décélération pour une fonction du quatrième degré (t^4) : accélération jusqu'à mi-parcours, puis décélération.

ConstanteValeur
QEasingCurve::OutInQuart12

Graphique d'une fonction OutInQuartic.

Courbe d'accélération/décélération pour une fonction du quatrième degré (t^4) : décélération jusqu'à mi-parcours, puis accélération.

ConstanteValeur
QEasingCurve::InQuint13

Graphique d'une fonction InQuintic

Courbe d'accélération pour une fonction quintique (t^5) : accélération à partir d'une vitesse nulle.

ConstanteValeur
QEasingCurve::OutQuint14

Graphique d'une fonction OutQuintic

Courbe d'atténuation pour une fonction du cinquième degré (t^5) : décélération jusqu'à une vitesse nulle.

ConstanteValeur
QEasingCurve::InOutQuint15

Graphique d'une fonction InOutQuintic

Courbe d'atténuation pour une fonction du cinquième degré (t^5) : accélération jusqu'à mi-parcours, puis décélération.

ConstanteValeur
QEasingCurve::OutInQuint16

Graphique de la fonction OutInQuintic

Courbe d'atténuation pour une fonction du cinquième degré (t⁵) : décélération jusqu'à mi-parcours, puis accélération.

ConstanteValeur
QEasingCurve::InSine17

Graphique d'une fonction non sinusoïdale

Courbe d'accélération pour une fonction sinusoïdale (sin(t)) : accélération à partir d'une vitesse nulle.

ConstanteValeur
QEasingCurve::OutSine18

Graphique d'une fonction non sinusoïdale

Courbe d'atténuation pour une fonction sinusoïdale (sin(t)) : décélération jusqu'à une vitesse nulle.

ConstanteValeur
QEasingCurve::InOutSine19

Graphique d'une fonction sinusoïdale InOut

Courbe d'accélération/décélération pour une fonction sinusoïdale (sin(t)) : accélération jusqu'à mi-parcours, puis décélération.

ConstanteValeur
QEasingCurve::OutInSine20

Graphique d'une fonction sinusoïdale OutIn

Courbe d'atténuation pour une fonction sinusoïdale (sin(t)) : décélération jusqu'à mi-parcours, puis accélération.

ConstanteValeur
QEasingCurve::InExpo21

Graphique d'une fonction InExponential

Courbe d'atténuation pour une fonction exponentielle (2^t) : accélération à partir d'une vitesse nulle.

ConstanteValeur
QEasingCurve::OutExpo22

Graphique d'une fonction exponentielle OutExponential

Courbe d'accélération/décélération pour une fonction exponentielle (2^t) : décélération jusqu'à une vitesse nulle.

ConstanteValeur
QEasingCurve::InOutExpo23

Graphique d'une fonction InOutExponential

Courbe d'atténuation pour une fonction exponentielle (2^t) : accélération jusqu'à mi-parcours, puis décélération.

ConstanteValeur
QEasingCurve::OutInExpo24

Graphique d'une fonction exponentielle OutIn

Courbe d'atténuation pour une fonction exponentielle (2^t) : décélération jusqu'à mi-parcours, puis accélération.

ConstanteValeur
QEasingCurve::InCirc25

Graphique d'une fonction InCircular

Courbe d'accélération pour une fonction circulaire (√(1-t²)) : accélération à partir d'une vitesse nulle.

ConstanteValeur
QEasingCurve::OutCirc26

Graphique d'une fonction OutCircular

Courbe d'accélération/décélération pour une fonction circulaire (sqrt(1-t^2)) : décélération jusqu’à une vitesse nulle.

ConstanteValeur
QEasingCurve::InOutCirc27

Graphique de la fonction InOutCircular

Courbe d'accélération/décélération pour une fonction circulaire (sqrt(1-t^2)) : accélération jusqu'à mi-parcours, puis décélération.

ConstanteValeur
QEasingCurve::OutInCirc28

Graphique de la fonction OutInCircular

Courbe d'accélération/décélération pour une fonction circulaire (√(1-t²)) : décélération jusqu'à mi-parcours, puis accélération.

ConstanteValeur
QEasingCurve::InElastic29

Graphique d'une fonction inélastique

Courbe d'accélération/décélération pour une fonction élastique (onde sinusoïdale à décroissance exponentielle) : accélération à partir d’une vitesse nulle. L’amplitude maximale peut être définie à l’aide du paramètre « amplitude », et la période de décroissance à l’aide du paramètre « période ».

ConstanteValeur
QEasingCurve::OutElastic30

Graphique d'une fonction OutElastic

Courbe d'atténuation pour une fonction élastique (onde sinusoïdale à décroissance exponentielle) : décélération jusqu'à une vitesse nulle. L'amplitude maximale peut être définie à l'aide du paramètre « amplitude », et la période de décroissance à l'aide du paramètre « période ».

ConstanteValeur
QEasingCurve::InOutElastic31

Graphique d'une fonction InOutElastic

Courbe d'accélération/décélération pour une fonction élastique (onde sinusoïdale à décroissance exponentielle) : accélération jusqu'à mi-parcours, puis décélération.

ConstanteValeur
QEasingCurve::OutInElastic32

Graphique d'une fonction OutInElastic

Courbe d'atténuation pour une fonction élastique (onde sinusoïdale à décroissance exponentielle) : décélération jusqu'à mi-parcours, puis accélération.

ConstanteValeur
QEasingCurve::InBack33

Graphique d'une fonction InBack

Courbe d'atténuation pour une fonction cubique de type « back » (avec dépassement : (s+1)*t^3 - s*t^2) : accélération à partir d'une vitesse nulle.

ConstanteValeur
QEasingCurve::OutBack34

Graphique d'une fonction OutBack

Courbe d'accélération/décélération pour un retour (fonction cubique avec dépassement : (s+1)*t^3 - s*t^2) : décélération jusqu'à une vitesse nulle.

ConstanteValeur
QEasingCurve::InOutBack35

Graphique d'une

Fonction InOutBack}

Courbe d'accélération/décélération pour un retour (fonction cubique avec dépassement : (s+1)*t^3 - s*t^2) avec accélération/décélération progressive : accélération jusqu'à mi-parcours, puis décélération.

ConstanteValeur
QEasingCurve::OutInBack36

Graphique de la fonction OutInBack

Courbe d'accélération/décélération pour un retour en arrière (accélération/décélération cubique avec dépassement : (s+1)*t^3 - s*t^2) : décélération jusqu'à mi-parcours, puis accélération.

ConstanteValeur
QEasingCurve::InBounce37

Graphique d'une fonction InBounce

Courbe d'accélération/décélération pour un rebond (rebond parabolique à décroissance exponentielle) : accélération à partir d'une vitesse nulle.

ConstanteValeur
QEasingCurve::OutBounce38

Graphique d'une fonction OutBounce

Courbe d’amortissement pour une fonction de rebond (rebond parabolique à décroissance exponentielle) : décélération à partir d’une vitesse nulle.

ConstanteValeur
QEasingCurve::InOutBounce39

Graphique de la fonction InOutBounce

Courbe d'accélération/décélération pour une fonction de rebond (rebond parabolique à décroissance exponentielle) avec accélération/décélération : accélération jusqu'à mi-parcours, puis décélération.

ConstanteValeur
QEasingCurve::OutInBounce40

Graphique de la fonction OutInBounce

Courbe d’accélération/décélération pour une fonction de rebond (rebond parabolique à décroissance exponentielle) : décélération jusqu’à mi-parcours, puis accélération.

ConstanteValeurDescription
QEasingCurve::BezierSpline45Permet de définir une courbe d’accélération personnalisée à l’aide d’une spline de Bézier cubique
QEasingCurve::TCBSpline46Permet de définir une courbe d'accélération/décélération personnalisée à l'aide d'une spline TCB
QEasingCurve::Custom47Cette valeur est renvoyée si l'utilisateur a spécifié un type de courbe personnalisé avec la fonction setCustomType(). Notez que vous ne pouvez pas appeler la fonction setType() avec cette valeur, mais que la fonction type() peut la renvoyer.

Voir également addCubicBezierSegment() et addTCBSegment().

Documentation sur les fonctions membres

QEasingCurve::QEasingCurve(QEasingCurve::Type type = Linear)

Construit une courbe d'accélération à partir de l'type ion fournie.

QEasingCurve::QEasingCurve(const QEasingCurve &other)

Créez une copie de other.

[noexcept] QEasingCurve::QEasingCurve(QEasingCurve &&other)

Crée une instance de `QEasingCurve` en la faisant pointer vers le même objet que celui vers lequel pointait ` other `.

[noexcept] QEasingCurve::~QEasingCurve()

Destructeur.

void QEasingCurve::addCubicBezierSegment(const QPointF &c1, const QPointF &c2, const QPointF &endPoint)

Ajoute un segment de spline de Bézier cubique pour définir une courbe d'accélération personnalisée. Cette fonction n'est applicable que si type() est défini sur QEasingCurve::BezierSpline. Notez que la spline commence implicitement en (0,0) et doit se terminer en (1,1) pour constituer une courbe d'accélération valide. c1 et c2 sont les points de contrôle utilisés pour tracer la courbe. endPoint est le point d'extrémité de la courbe.

Voir également fromCubicBezier().

void QEasingCurve::addTCBSegment(const QPointF &nextPoint, qreal t, qreal c, qreal b)

Ajoute un segment de spline de Bézier TCB pour définir une courbe d'accélération personnalisée. Cela n'est applicable que si type() est QEasingCurve::TCBSpline. Pour que la courbe d'accélération soit valide, la spline doit commencer explicitement en (0,0) et se terminer en (1,1). La tension t modifie la longueur du vecteur tangent. La continuité c modifie la brusquerie du passage d’une tangente à l’autre. Le biais b modifie la direction du vecteur tangent. nextPoint correspond à la position d’échantillonnage. Ces trois paramètres sont valides entre -1 et 1 et définissent la tangente du point de contrôle. Si les trois paramètres sont égaux à 0, la spline obtenue est une spline de Catmull-Rom. Les points de début et de fin ont toujours un biais de -1 et 1, car la tangente extérieure n’est pas définie.

qreal QEasingCurve::amplitude() const

Renvoie l'amplitude. Cette fonction n'est pas applicable à tous les types de courbes. Elle ne s'applique qu'aux courbes de rebond et aux courbes élastiques (courbes de type() QEasingCurve::InBounce, QEasingCurve::OutBounce, QEasingCurve::InOutBounce, QEasingCurve::OutInBounce, QEasingCurve::InElastic, QEasingCurve::OutElastic, QEasingCurve::InOutElastic ou QEasingCurve::OutInElastic).

Voir également setAmplitude().

QEasingCurve::EasingFunction QEasingCurve::customType() const

Renvoie le pointeur de fonction vers la courbe d'accélération personnalisée. Si la fonction type() ne renvoie pas QEasingCurve::Custom, cette fonction renverra 0.

Voir également setCustomType().

[static, since 6.12] QEasingCurve QEasingCurve::fromCubicBezier(QPointF c1, QPointF c2)

Renvoie une courbe de Bézier cubique avec les points de contrôle spécifiés : c1 et c2.

Une courbe de Bézier cubique est définie par quatre points de contrôle : C0, C1, C2 et C3. C0 et C3 correspondent respectivement aux positions de départ et d'arrivée. Cette fonction renvoie une courbe de Bézier cubique dont le point de départ C0 est fixé à (0, 0) et le point d'arrivée C3 à (1, 1).

Il s'agit d'une fonction d'aide pratique, équivalente à l'appel de `addCubicBezierSegment(c1, c2, QPointF(1, 1))`. Si vous avez besoin de construire une spline de Bézier cubique plus complexe, utilisez plutôt la fonction ` addCubicBezierSegment()`.

Cette fonction a été introduite dans Qt 6.12.

Voir également addCubicBezierSegment().

qreal QEasingCurve::overshoot() const

Renvoie le dépassement. Cette fonction n'est pas applicable à tous les types de courbes. Elle ne s'applique que si type() a pour valeur QEasingCurve::InBack, QEasingCurve::OutBack, QEasingCurve::InOutBack ou QEasingCurve::OutInBack.

Voir également setOvershoot().

qreal QEasingCurve::period() const

Renvoie la période. Cette fonction n'est pas applicable à tous les types de courbes. Elle ne s'applique que si type() a pour valeur QEasingCurve::InElastic, QEasingCurve::OutElastic, QEasingCurve::InOutElastic ou QEasingCurve::OutInElastic.

Voir également setPeriod().

void QEasingCurve::setAmplitude(qreal amplitude)

Définit l'amplitude sur amplitude.

Cela permet de définir l'amplitude du rebond ou l'amplitude de l'effet « ressort » élastique. Plus le nombre est élevé, plus l'amplitude est importante.

Voir également amplitude().

void QEasingCurve::setCustomType(QEasingCurve::EasingFunction func)

Définit une courbe d'accélération personnalisée définie par l'utilisateur dans la fonction func. La signature de la fonction est `qreal myEasingFunction(qreal progress)`, où `progress` et la valeur de retour sont considérés comme normalisés entre 0 et 1. (Dans certains cas, la valeur de retour peut se situer en dehors de cette plage.) Après l’appel de cette fonction, ` type()` renverra ` QEasingCurve::Custom`. ` func ` ne peut pas être ` nullptr`.

Voir également customType() et valueForProgress().

void QEasingCurve::setOvershoot(qreal overshoot)

Définit le dépassement sur overshoot.

La valeur 0 ne produit aucun dépassement, tandis que la valeur par défaut de 1,70158 produit un dépassement de 10 %.

Voir également overshoot().

void QEasingCurve::setPeriod(qreal period)

Définit la période sur period. Une valeur de période faible donnera une fréquence élevée à la courbe. Une période élevée lui donnera une fréquence faible.

Voir également period().

void QEasingCurve::setType(QEasingCurve::Type type)

Définit le type de courbe d'accélération sur « type ».

Voir également type().

[noexcept] void QEasingCurve::swap(QEasingCurve &other)

Permet d'échanger cette courbe contre celle de other. Cette opération est très rapide et ne pose jamais de problème.

QList<QPointF> QEasingCurve::toCubicSpline() const

Renvoie la classe `cubicBezierSpline` qui définit une courbe d'accélération personnalisée. Si la courbe d'accélération ne comporte pas de courbe d'accélération Bézier personnalisée, la liste est vide.

QEasingCurve::Type QEasingCurve::type() const

Renvoie le type de la courbe d'accélération.

Voir aussi setType().

qreal QEasingCurve::valueForProgress(qreal progress) const

Renvoie la progression effective de la courbe d'accélération/décélération définie par progress. Alors que progress doit être compris entre 0 et 1, la progression effective renvoyée peut se situer en dehors de ces limites. Par exemple, QEasingCurve::InBack renverra des valeurs négatives au début de la fonction.

[noexcept] QEasingCurve &QEasingCurve::operator=(QEasingCurve &&other)

Cette opération attribue l'other à cette instance QEasingCurve.

QEasingCurve &QEasingCurve::operator=(const QEasingCurve &other)

Copier other.

Connexes (non-membres)

[noexcept] bool operator!=(const QEasingCurve &lhs, const QEasingCurve &rhs)

Compare la courbe d'accélération lhs à rhs et renvoie true si elles ne sont pas identiques ; sinon, renvoie false. Cette fonction compare également les propriétés des courbes.

Voir également operator==().

QDataStream &operator<<(QDataStream &stream, const QEasingCurve &easing)

Écrit la courbe d'easing donnée dans le flux stream spécifié et renvoie une référence à ce flux.

Avertissement : l'écriture de courbes d'accélération de type « QEasingCurve::Custom » (c'est-à-dire des courbes avec une fonction d'accélération personnalisée) n'est pas prise en charge.

Voir également Sérialisation des types de données Qt.

[noexcept] bool operator==(const QEasingCurve &lhs, const QEasingCurve &rhs)

Compare la courbe d'atténuation lhs à rhs et renvoie true si elles sont identiques ; sinon, renvoie false. Cette fonction compare également les propriétés des courbes.

QDataStream &operator>>(QDataStream &stream, QEasingCurve &easing)

Lit une courbe d'atténuation à partir de l'stream ion fournie et la convertit en une courbe easing ion fournie, puis renvoie une référence au flux.

Voir également Sérialisation des types de données Qt.

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