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 |
- Lista de todos los miembros, incluyendo los heredados
- QEasingCurve es parte de Animation Framework.
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) |
Relacionados No miembros
| 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:
enum QEasingCurve::Type
El tipo de curva de flexibilización.
| Constante | Valor |
|---|---|
QEasingCurve::Linear | 0 |

Curva de relajación para una función lineal (t): la velocidad es constante.
| Constante | Valor constante |
|---|---|
QEasingCurve::InQuad | 1 |

Curva decreciente para una función cuadrática (t^2): aceleración desde velocidad cero.
| Constante | Valor |
|---|---|
QEasingCurve::OutQuad | 2 |

Curva de suavización de una función cuadrática (t^2): desaceleración hasta velocidad cero.
| Constante | Valor |
|---|---|
QEasingCurve::InOutQuad | 3 |

Curva de suavizado para una función cuadrática (t^2): aceleración hasta la mitad, luego deceleración.
| Constante | Valor |
|---|---|
QEasingCurve::OutInQuad | 4 |

Curva de suavizado para una función cuadrática (t^2): desaceleración hasta la mitad y, a continuación, aceleración.
| Constante | Valor constante |
|---|---|
QEasingCurve::InCubic | 5 |

Curva de relajación para una función cúbica (t^3): aceleración desde velocidad cero.
| Constante | Valor |
|---|---|
QEasingCurve::OutCubic | 6 |

Curva de suavización de una función cúbica (t^3): desaceleración hasta velocidad cero.
| Constante | Valor |
|---|---|
QEasingCurve::InOutCubic | 7 |

Curva de suavizado para una función cúbica (t^3): aceleración hasta la mitad, luego deceleración.
| Constante | Valor |
|---|---|
QEasingCurve::OutInCubic | 8 |

Curva de suavizado de una función cúbica (t^3): desaceleración hasta la mitad y, a continuación, aceleración.
| Constante | Valor |
|---|---|
QEasingCurve::InQuart | 9 |

Curva de relajación para una función cuártica (t^4): aceleración desde velocidad cero.
| Constante | Valor |
|---|---|
QEasingCurve::OutQuart | 10 |

Curva de suavización de una función cuártica (t^4): desaceleración hasta velocidad cero.
| Constante | Valor |
|---|---|
QEasingCurve::InOutQuart | 11 |

Curva de suavizado para una función cuártica (t^4): aceleración hasta la mitad, luego deceleración.
| Constante | Valor |
|---|---|
QEasingCurve::OutInQuart | 12 |

Curva de suavizado para una función cuártica (t^4): desaceleración hasta la mitad y, a continuación, aceleración.
| Constante | Valor |
|---|---|
QEasingCurve::InQuint | 13 |

Curva de relajación para una función quíntica (t^5): aceleración desde velocidad cero.
| Constante | Valor constante |
|---|---|
QEasingCurve::OutQuint | 14 |

Curva de relajación para una función quíntica (t^5): desaceleración hasta velocidad cero.
| Constante | Valor |
|---|---|
QEasingCurve::InOutQuint | 15 |

Curva de relajación para una función quíntica (t^5): aceleración hasta la mitad, luego deceleración.
| Constante | Valor constante |
|---|---|
QEasingCurve::OutInQuint | 16 |

Curva de suavizado para una función quíntica (t^5): desaceleración hasta la mitad y, a continuación, aceleración.
| Constante | Valor constante |
|---|---|
QEasingCurve::InSine | 17 |

Curva de relajación para una función sinusoidal (sin(t)): aceleración desde velocidad cero.
| Constante | Valor |
|---|---|
QEasingCurve::OutSine | 18 |

Curva de relajación para una función sinusoidal (sin(t)): desaceleración hasta velocidad cero.
| Constante | Valor |
|---|---|
QEasingCurve::InOutSine | 19 |

Curva de relajación para una función sinusoidal (sin(t)): aceleración hasta la mitad y, a continuación, deceleración.
| Constante | Valor |
|---|---|
QEasingCurve::OutInSine | 20 |

Curva de atenuación de una función sinusoidal (sin(t)): desaceleración hasta la mitad y, a continuación, aceleración.
| Constante | Valor constante |
|---|---|
QEasingCurve::InExpo | 21 |

Curva de relajación para una función exponencial (2^t): aceleración desde velocidad cero.
| Constante | Valor |
|---|---|
QEasingCurve::OutExpo | 22 |

Curva de relajación de una función exponencial (2^t): desaceleración hasta velocidad cero.
| Constante | Valor |
|---|---|
QEasingCurve::InOutExpo | 23 |

Curva de relajación para una función exponencial (2^t): aceleración hasta la mitad, luego deceleración.
| Constante | Valor |
|---|---|
QEasingCurve::OutInExpo | 24 |

Curva de relajación para una función exponencial (2^t): desaceleración hasta la mitad, luego aceleración.
| Constante | Valor constante |
|---|---|
QEasingCurve::InCirc | 25 |

Curva de relajación para una función circular (sqrt(1-t^2)): aceleración desde velocidad cero.
| Constante | Valor |
|---|---|
QEasingCurve::OutCirc | 26 |

Curva de relajación para una función circular (sqrt(1-t^2)): desaceleración hasta velocidad cero.
| Constante | Valor |
|---|---|
QEasingCurve::InOutCirc | 27 |

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

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

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.
| Constante | Valor |
|---|---|
QEasingCurve::OutElastic | 30 |

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.
| Constante | Valor |
|---|---|
QEasingCurve::InOutElastic | 31 |

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.
| Constante | Valor constante |
|---|---|
QEasingCurve::OutInElastic | 32 |

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.
| Constante | Valor constante |
|---|---|
QEasingCurve::InBack | 33 |

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

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.
| Constante | Valor |
|---|---|
QEasingCurve::InOutBack | 35 |

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.
| Constante | Valor |
|---|---|
QEasingCurve::OutInBack | 36 |

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.
| Constante | Valor |
|---|---|
QEasingCurve::InBounce | 37 |

Curva de relajación para una función de rebote (rebote parabólico con decaimiento exponencial): aceleración desde velocidad cero.
| Constante | Valor constante |
|---|---|
QEasingCurve::OutBounce | 38 |

Curva de relajación para una función de rebote (rebote parabólico exponencialmente decreciente): desaceleración desde velocidad cero.
| Constante | Valor |
|---|---|
QEasingCurve::InOutBounce | 39 |

Curva de relajación para una función de rebote (rebote parabólico exponencialmente decreciente): aceleración hasta la mitad, luego desaceleración.
| Constante | Valor |
|---|---|
QEasingCurve::OutInBounce | 40 |

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.
| Constante | Valor | Descripción |
|---|---|---|
QEasingCurve::BezierSpline | 45 | Permite definir una curva de suavizado personalizada utilizando un spline de Bézier cúbico. |
QEasingCurve::TCBSpline | 46 | Permite definir una curva de relajación personalizada usando un spline TCB |
QEasingCurve::Custom | 47 | Se 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.