En esta página

QEasingCurve Class

La clase QEasingCurve proporciona curvas de relajación para controlar la animación. Más...

Cabecera: #include <QEasingCurve>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

Tipos Públicos

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

Funciones Públicas

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)
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)

Descripción detallada

Las curvas de suavizado describen una función que controla cómo debe ser la velocidad de interpolación entre 0 y 1. Las curvas de suavizado permiten que las transiciones de un valor a otro parezcan más naturales de lo que permitiría una simple velocidad constante. La clase QEasingCurve se utiliza normalmente junto con las clases QVariantAnimation y QPropertyAnimation, pero puede utilizarse por sí sola. Normalmente se utiliza para acelerar la interpolación desde velocidad cero (ease in) o desacelerar hasta velocidad cero (ease out). La aceleración y la deceleración también pueden combinarse en la misma curva de aceleración.

Para calcular la velocidad de la interpolación, la curva de relajación proporciona la función valueForProgress(), donde el argumento progress especifica el progreso de la interpolación: 0 es el valor inicial de la interpolación, 1 es el valor final de la interpolación. El valor devuelto es el progreso efectivo de la interpolación. Si el valor devuelto es el mismo que el valor de entrada para todos los valores de entrada, la curva de atenuación es una curva lineal. Este es el comportamiento por defecto.

Por ejemplo,

QEasingCurve easing(QEasingCurve::InOutQuad);for (qreal t = 0.0; t < 1.0; t += 0.1)    qWarning() << "Effective progress" << t << "is"
               << easing.valueParaProgreso(t);

imprimirá el progreso efectivo de la interpolación entre 0 y 1.

Cuando se utiliza un QPropertyAnimation, la curva easing asociada se utilizará para controlar el progreso de la interpolación entre startValue y endValue:

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

La capacidad de establecer una amplitud, un rebasamiento o un periodo depende del tipo de QEasingCurve. El acceso a la amplitud está disponible para las curvas que se comportan como muelles, como las curvas elásticas y de rebote. Al cambiar la amplitud cambia la altura de la curva. El acceso al periodo sólo está disponible para las curvas elásticas y establecer un periodo más alto ralentiza la velocidad de rebote. Sólo las curvas que tienen comportamientos de "boomerang" como InBack, OutBack, InOutBack, y OutInBack tienen ajustes de sobreimpulso. Estas curvas interpolarán más allá de los puntos finales y volverán al punto final, actuando de forma similar a un boomerang.

El ejemplo de curvas de suavizado contiene muestras de tipos de QEasingCurve y le permite cambiar la configuración de la curva.

Documentación de los tipos de miembros

QEasingCurve::EasingFunction

Se trata de un typedef para un puntero a una función con la siguiente firma:

qreal myEasingFunction(qreal progress);

enum QEasingCurve::Type

El tipo de curva de flexibilización.

ConstanteValor
QEasingCurve::Linear0

Gráfica de una función lineal.

Curva de relajación para una función lineal (t): la velocidad es constante.

ConstanteValor constante
QEasingCurve::InQuad1

Gráfica de una función InQuadratic.

Curva decreciente para una función cuadrática (t^2): aceleración desde velocidad cero.

ConstanteValor
QEasingCurve::OutQuad2

Gráfica de una función cuadrática externa

Curva de suavización de una función cuadrática (t^2): desaceleración hasta velocidad cero.

ConstanteValor
QEasingCurve::InOutQuad3

Gráfica de una función cuadrática InOutquad

Curva de suavizado para una función cuadrática (t^2): aceleración hasta la mitad, luego deceleración.

ConstanteValor
QEasingCurve::OutInQuad4

Gráfica de una función cuadrática OutInquad

Curva de suavizado para una función cuadrática (t^2): desaceleración hasta la mitad y, a continuación, aceleración.

ConstanteValor constante
QEasingCurve::InCubic5

Gráfico de una función InCubic

Curva de relajación para una función cúbica (t^3): aceleración desde velocidad cero.

ConstanteValor
QEasingCurve::OutCubic6

Gráfico de una función OutCubic

Curva de suavización de una función cúbica (t^3): desaceleración hasta velocidad cero.

ConstanteValor
QEasingCurve::InOutCubic7

Gráfica de una función InOutCubic.

Curva de suavizado para una función cúbica (t^3): aceleración hasta la mitad, luego deceleración.

ConstanteValor
QEasingCurve::OutInCubic8

Gráfica de una función OutInCubic.

Curva de suavizado de una función cúbica (t^3): desaceleración hasta la mitad y, a continuación, aceleración.

ConstanteValor
QEasingCurve::InQuart9

Gráfica de una función InQuartic.

Curva de relajación para una función cuártica (t^4): aceleración desde velocidad cero.

ConstanteValor
QEasingCurve::OutQuart10

Gráfica de una función OutQuartic.

Curva de suavización de una función cuártica (t^4): desaceleración hasta velocidad cero.

ConstanteValor
QEasingCurve::InOutQuart11

Gráfica de una función InOutQuartic.

Curva de suavizado para una función cuártica (t^4): aceleración hasta la mitad, luego deceleración.

ConstanteValor
QEasingCurve::OutInQuart12

Gráfica de una función OutInQuartic.

Curva de suavizado para una función cuártica (t^4): desaceleración hasta la mitad y, a continuación, aceleración.

ConstanteValor
QEasingCurve::InQuint13

Gráfica de una función InQuintic

Curva de relajación para una función quíntica (t^5): aceleración desde velocidad cero.

ConstanteValor constante
QEasingCurve::OutQuint14

Gráfica de una función OutQuintic

Curva de relajación para una función quíntica (t^5): desaceleración hasta velocidad cero.

ConstanteValor
QEasingCurve::InOutQuint15

Gráfico de una función InOutQuintic

Curva de relajación para una función quíntica (t^5): aceleración hasta la mitad, luego deceleración.

ConstanteValor constante
QEasingCurve::OutInQuint16

Gráfico de una función OutInQuintic

Curva de suavizado para una función quíntica (t^5): desaceleración hasta la mitad y, a continuación, aceleración.

ConstanteValor constante
QEasingCurve::InSine17

Gráfica de una función InSinusoidal

Curva de relajación para una función sinusoidal (sin(t)): aceleración desde velocidad cero.

ConstanteValor
QEasingCurve::OutSine18

Gráfica de una función OutSinusoidal

Curva de relajación para una función sinusoidal (sin(t)): desaceleración hasta velocidad cero.

ConstanteValor
QEasingCurve::InOutSine19

Gráfica de una función InOutSinusoidal

Curva de relajación para una función sinusoidal (sin(t)): aceleración hasta la mitad y, a continuación, deceleración.

ConstanteValor
QEasingCurve::OutInSine20

Gráfica de una función OutInSinusoidal

Curva de atenuación de una función sinusoidal (sin(t)): desaceleración hasta la mitad y, a continuación, aceleración.

ConstanteValor constante
QEasingCurve::InExpo21

Gráfica de una función InExponencial

Curva de relajación para una función exponencial (2^t): aceleración desde velocidad cero.

ConstanteValor
QEasingCurve::OutExpo22

Gráfica de una función OutExponential

Curva de relajación de una función exponencial (2^t): desaceleración hasta velocidad cero.

ConstanteValor
QEasingCurve::InOutExpo23

Gráfica de una función InOutExponential

Curva de relajación para una función exponencial (2^t): aceleración hasta la mitad, luego deceleración.

ConstanteValor
QEasingCurve::OutInExpo24

Gráfica de una función OutInExponential

Curva de relajación para una función exponencial (2^t): desaceleración hasta la mitad, luego aceleración.

ConstanteValor constante
QEasingCurve::InCirc25

Gráfica de una función InCircular

Curva de relajación para una función circular (sqrt(1-t^2)): aceleración desde velocidad cero.

ConstanteValor
QEasingCurve::OutCirc26

Gráfica de una función OutCircular

Curva de relajación para una función circular (sqrt(1-t^2)): desaceleración hasta velocidad cero.

ConstanteValor
QEasingCurve::InOutCirc27

Gráfico de una función InOutCircular

Curva de relajación para una función circular (sqrt(1-t^2)): aceleración hasta la mitad, luego deceleración.

ConstanteValor
QEasingCurve::OutInCirc28

Gráfico de una función OutInCircular

Curva de suavizado para una función circular (sqrt(1-t^2)): desaceleración hasta la mitad y, a continuación, aceleración.

ConstanteValor
QEasingCurve::InElastic29

Gráfica de una función InElastic

Curva de relajación para una función elástica (onda sinusoidal exponencialmente decreciente): aceleración desde velocidad cero. La amplitud del pico puede fijarse con el parámetro amplitud, y el periodo de decaimiento por el parámetro periodo.

ConstanteValor
QEasingCurve::OutElastic30

Gráfica de una función OutElastic

Curva de relajación para una función elástica (onda sinusoidal exponencialmente decreciente): desaceleración a velocidad cero. La amplitud de pico puede ajustarse con el parámetro amplitud y el periodo de decaimiento con el parámetro periodo.

ConstanteValor
QEasingCurve::InOutElastic31

Gráfico de una función InOutElastic

Curva de deceleración para una función elástica (onda sinusoidal exponencialmente decreciente): aceleración hasta la mitad y, a continuación, deceleración.

ConstanteValor constante
QEasingCurve::OutInElastic32

Gráfico de una función OutInElastic

Curva de relajación para una función elástica (onda sinusoidal exponencialmente decreciente): desaceleración hasta la mitad y, a continuación, aceleración.

ConstanteValor constante
QEasingCurve::InBack33

Gráfico de una función InBack

Curva de relajación para una función cúbica de retroceso (s+1)*t^3 - s*t^2): aceleración desde velocidad cero.

ConstanteValor
QEasingCurve::OutBack34

Gráfico de una función OutBack

Curva de relajación para un retroceso (función cúbica de sobreimpulso: (s+1)*t^3 - s*t^2): desaceleración hasta velocidad cero.

ConstanteValor
QEasingCurve::InOutBack35

Gráfico de a

Función InOutBack}

Curva de entrada/salida para un retroceso (función cúbica de sobreimpulso: (s+1)*t^3 - s*t^2): aceleración hasta la mitad y, a continuación, deceleración.

ConstanteValor
QEasingCurve::OutInBack36

Gráfico de una función OutInBack

Curva de relajación para un retroceso (relajación cúbica de rebasamiento: (s+1)*t^3 - s*t^2) relajación de entrada/salida: desaceleración hasta la mitad, luego aceleración.

ConstanteValor
QEasingCurve::InBounce37

Gráfico de una función InBounce

Curva de relajación para una función de rebote (rebote parabólico con decaimiento exponencial): aceleración desde velocidad cero.

ConstanteValor constante
QEasingCurve::OutBounce38

Gráfico de una función OutBounce

Curva de relajación para una función de rebote (rebote parabólico exponencialmente decreciente): desaceleración desde velocidad cero.

ConstanteValor
QEasingCurve::InOutBounce39

Gráfico de una función InOutBounce

Curva de relajación para una función de rebote (rebote parabólico exponencialmente decreciente): aceleración hasta la mitad, luego desaceleración.

ConstanteValor
QEasingCurve::OutInBounce40

Gráfico de una función OutInBounce

Curva de relajación para una función de rebote (rebote parabólico con decaimiento exponencial): desaceleración hasta la mitad y, a continuación, aceleración.

ConstanteValorDescripción
QEasingCurve::BezierSpline45Permite definir una curva de suavizado personalizada utilizando un spline de Bézier cúbico.
QEasingCurve::TCBSpline46Permite definir una curva de relajación personalizada usando un spline TCB
QEasingCurve::Custom47Se devuelve si el usuario especificó un tipo de curva personalizada con setCustomType(). Tenga en cuenta que no puede llamar a setType() con este valor, pero type() puede devolverlo.

Véase también addCubicBezierSegment() y addTCBSegment().

Documentación de las funciones miembro

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

Construye una curva de relajación de la dirección type.

QEasingCurve::QEasingCurve(const QEasingCurve &other)

Construye una copia de other.

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

Mover-construye una instancia de QEasingCurve, haciendo que apunte al mismo objeto al que apuntaba other.

[noexcept] QEasingCurve::~QEasingCurve()

Destructor.

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

Añade un segmento de una spline bezier cúbica para definir una curva de suavizado personalizada. Sólo es aplicable si type() es QEasingCurve::BezierSpline. Tenga en cuenta que la spline comienza implícitamente en (0.0, 0.0) y tiene que terminar en (1.0, 1.0) para ser una curva de flexión válida. c1 y c2 son los puntos de control utilizados para dibujar la curva. endPoint es el punto final de la curva.

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

Añade un segmento de una spline bezier TCB para definir una curva de relajación personalizada. Sólo es aplicable si type() es QEasingCurve::TCBSpline. La spline tiene que empezar explícitamente en (0.0, 0.0) y tiene que terminar en (1.0, 1.0) para ser una curva easing válida. La tensión t cambia la longitud del vector tangente. La continuidad c cambia la nitidez en el cambio entre las tangentes. El sesgo b cambia la dirección del vector tangente. nextPoint es la posición de la muestra. Los tres parámetros son válidos entre -1 y 1 y definen la tangente del punto de control. Si los tres parámetros son 0 la spline resultante es una spline Catmull-Rom. El punto inicial y final siempre tienen un sesgo de -1 y 1, ya que la tangente exterior no está definida.

qreal QEasingCurve::amplitude() const

Devuelve la amplitud. No es aplicable a todos los tipos de curvas. Sólo es aplicable para curvas de rebote y elásticas (curvas de type() QEasingCurve::InBounce, QEasingCurve::OutBounce, QEasingCurve::InOutBounce, QEasingCurve::OutInBounce, QEasingCurve::InElastic, QEasingCurve::OutElastic, QEasingCurve::InOutElastic o QEasingCurve::OutInElastic).

Véase también setAmplitude().

QEasingCurve::EasingFunction QEasingCurve::customType() const

Devuelve el puntero de la función a la curva de flexión personalizada. Si type() no devuelve QEasingCurve::Custom, esta función devolverá 0.

Véase también setCustomType().

qreal QEasingCurve::overshoot() const

Devuelve el rebasamiento. No es aplicable a todos los tipos de curva. Sólo es aplicable si type() es QEasingCurve::InBack, QEasingCurve::OutBack, QEasingCurve::InOutBack o QEasingCurve::OutInBack.

Véase también setOvershoot().

qreal QEasingCurve::period() const

Devuelve el periodo. No es aplicable a todos los tipos de curva. Sólo es aplicable si type() es QEasingCurve::InElastic, QEasingCurve::OutElastic, QEasingCurve::InOutElastic o QEasingCurve::OutInElastic.

Véase también setPeriod().

void QEasingCurve::setAmplitude(qreal amplitude)

Establece la amplitud en amplitude.

Esto fijará la amplitud del rebote o la amplitud del efecto "muelle" elástico. Cuanto mayor sea el número, mayor será la amplitud.

Véase también amplitude().

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

Establece una curva de suavizado personalizada definida por el usuario en la función func. La firma de la función es qreal myEasingFunction(qreal progress), donde progress y el valor de retorno se consideran normalizados entre 0 y 1. (En algunos casos el valor de retorno puede estar fuera de ese rango) Después de llamar a esta función type() devolverá QEasingCurve::Custom. func no puede ser nullptr.

Véase también customType() y valueForProgress().

void QEasingCurve::setOvershoot(qreal overshoot)

Establece el rebasamiento en overshoot.

0 no produce sobreimpulso, y el valor por defecto de 1.70158 produce un sobreimpulso del 10%.

Véase también overshoot().

void QEasingCurve::setPeriod(qreal period)

Establece el periodo en period. Establecer un valor de periodo pequeño dará una frecuencia alta a la curva. Un periodo grande le dará una frecuencia pequeña.

Véase también period().

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

Establece el tipo de la curva de relajación en type.

Véase también type().

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

Cambia esta curva por other. Esta operación es muy rápida y nunca falla.

QList<QPointF> QEasingCurve::toCubicSpline() const

Devuelve la cubicBezierSpline que define una curva de servidumbre personalizada. Si la curva de servidumbre no tiene una curva de servidumbre bezier personalizada, la lista estará vacía.

QEasingCurve::Type QEasingCurve::type() const

Devuelve el tipo de la curva de flexión.

Véase también setType().

qreal QEasingCurve::valueForProgress(qreal progress) const

Devuelve el progreso efectivo de la curva de flexión en progress. Mientras que progress debe estar entre 0 y 1, el progreso efectivo devuelto puede estar fuera de esos límites. Por ejemplo, QEasingCurve::InBack devolverá valores negativos al principio de la función.

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

Mover-asigna other a esta instancia QEasingCurve.

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

Copiar other.

Relacionados No miembros

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

Compara la curva de flexión lhs con rhs y devuelve true si no son iguales; en caso contrario devuelve false. También comparará las propiedades de las curvas.

Véase también operator==().

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

Escribe la curva easing dada en el stream dado y devuelve una referencia al flujo.

Advertencia: La escritura de curvas de tipo QEasingCurve::Custom (es decir, curvas con una función easing personalizada) no está soportada.

Ver también Serializar tipos de datos Qt.

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

Compara la curva de flexión lhs con rhs y devuelve true si son iguales; en caso contrario devuelve false. También comparará las propiedades de las curvas.

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

Lee una curva de relajación del stream dado en la curva easing dada y devuelve una referencia al flujo.

Ver también Serializar tipos de datos 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.