QVariantAnimation Class
La clase QVariantAnimation proporciona una clase base para animaciones. Más...
| Cabecera: | #include <QVariantAnimation> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| Hereda: | QAbstractAnimation |
| Heredado por: |
- Lista de todos los miembros, incluyendo los heredados
- QVariantAnimation es parte de Animation Framework.
Tipos Públicos
Propiedades
|
|
Funciones públicas
| QVariantAnimation(QObject *parent = nullptr) | |
| virtual | ~QVariantAnimation() |
| QBindable<int> | bindableDuration() |
| QBindable<QEasingCurve> | bindableEasingCurve() |
| QVariant | currentValue() const |
| virtual int | duration() const override |
| QEasingCurve | easingCurve() const |
| QVariant | endValue() const |
| QVariant | keyValueAt(qreal step) const |
| QVariantAnimation::KeyValues | keyValues() const |
| void | setDuration(int msecs) |
| void | setEasingCurve(const QEasingCurve &easing) |
| void | setEndValue(const QVariant &value) |
| void | setKeyValueAt(qreal step, const QVariant &value) |
| void | setKeyValues(const QVariantAnimation::KeyValues &keyValues) |
| void | setStartValue(const QVariant &value) |
| QVariant | startValue() const |
Señales
| void | valueChanged(const QVariant &value) |
Funciones protegidas
| virtual QVariant | interpolated(const QVariant &from, const QVariant &to, qreal progress) const |
| virtual void | updateCurrentValue(const QVariant &value) |
Funciones protegidas reimplementadas
| virtual bool | event(QEvent *event) override |
| virtual void | updateCurrentTime(int) override |
| virtual void | updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState) override |
No miembros relacionados
| void | qRegisterAnimationInterpolator(QVariant (*)(const T &, const T &, qreal) func) |
Descripción detallada
Esta clase forma parte de The Animation Framework. Sirve como clase base para animaciones de propiedades y elementos, con funciones para funcionalidad compartida.
La clase realiza interpolación sobre QVariants, pero deja el uso de los valores interpolados a sus subclases. Actualmente, Qt proporciona QPropertyAnimation, que anima las propiedades Qt. Consulte la descripción de la clase QPropertyAnimation si desea animar dichas propiedades.
Puedes entonces establecer valores de inicio y fin para la propiedad llamando a setStartValue() y setEndValue(), y finalmente llamar a start() para iniciar la animación. QVariantAnimation interpolará la propiedad del objeto destino y emitirá valueChanged(). Para reaccionar a un cambio en el valor actual hay que reimplementar la función virtual updateCurrentValue() o conectarse a dicha señal.
También es posible fijar valores en pasos específicos situados entre el valor inicial y el final. La interpolación tocará entonces estos puntos en los pasos especificados. Tenga en cuenta que los valores inicial y final se definen como los valores clave en 0,0 y 1,0.
Hay dos maneras de afectar como QVariantAnimation interpola los valores. Puedes establecer una curva de relajación llamando a setEasingCurve(), y configurar la duración llamando a setDuration(). Puedes cambiar cómo se interpolan los QVariants creando una subclase de QVariantAnimation, y reimplementando la función virtual interpolated().
Subclasificar QVariantAnimation puede ser una alternativa si tiene QVariants que no desea declarar como propiedades Qt. Tenga en cuenta, sin embargo, que en la mayoría de los casos será mejor declarar su QVariant como una propiedad.
No todos los tipos de QVariant están soportados. A continuación se muestra una lista de los tipos QVariant soportados actualmente:
Si necesita interpolar otros tipos de variantes, incluidos los tipos personalizados, deberá implementar la interpolación para ellos usted mismo. Para ello, puede registrar una función interpoladora para un tipo determinado. Esta función toma 3 parámetros: el valor inicial, el valor final y el progreso actual.
Ejemplo:
QVariant miInterpoladorColor(const QColor &inicio, const QColor&fin qreal progreso) { // ... return QColor(/*...*/); }// ...void someFunc() { // ... qRegisterAnimationInterpolator<QColor>(myColorInterpolator); // ...}
Otra opción es reimplementar interpolated(), que devuelve valores de interpolación para el valor que se está interpolando.
Véase también QPropertyAnimation, QAbstractAnimation, y The Animation Framework.
Documentación de tipos de miembros
[alias] QVariantAnimation::KeyValue
Se trata de un typedef para std::pair<qreal, QVariant>.
QVariantAnimation::KeyValues
Documentación de propiedades
[read-only] currentValue : QVariant
Esta propiedad contiene el valor actual de la animación.
Esta propiedad describe el valor actual; un valor interpolado entre start value y end value, utilizando el tiempo actual para el progreso. El valor en sí se obtiene de interpolated(), que es llamada repetidamente mientras la animación se está ejecutando.
QVariantAnimation llama a la función virtual updateCurrentValue() cuando cambia el valor actual. Esto es particularmente útil para subclases que necesitan rastrear actualizaciones. Por ejemplo, QPropertyAnimation utiliza esta función para animar propiedades Qt.
Funciones de acceso:
| QVariant | currentValue() const |
Notifier signal:
| void | valueChanged(const QVariant &value) |
Véase también startValue y endValue.
[bindable] duration : int
Nota: Esta propiedad soporta enlaces QProperty.
Esta propiedad contiene la duración de la animación
Esta propiedad describe la duración en milisegundos de la animación. La duración por defecto es de 250 milisegundos.
Funciones de acceso:
| virtual int | duration() const override |
| void | setDuration(int msecs) |
Véase también QAbstractAnimation::duration().
[bindable] easingCurve : QEasingCurve
Nota: Esta propiedad soporta QProperty bindings.
Esta propiedad define la curva de relajación de la animación
Esta propiedad define la curva de servidumbre de la animación. Por defecto, se utiliza una curva de easing lineal, lo que resulta en una interpolación lineal. Se proporcionan otras curvas, por ejemplo, QEasingCurve::InCirc, que proporciona una curva de entrada circular. Otro ejemplo es QEasingCurve::InOutElastic, que proporciona un efecto elástico en los valores de la variante interpolada.
QVariantAnimation utilizará QEasingCurve::valueForProgress() para transformar el "progreso normalizado" (currentTime() / totalDuration()) de la animación en el progreso efectivo realmente utilizado por la animación. Es este progreso efectivo el que será el progreso cuando se llame a interpolated(). Además, los pasos en keyValues se refieren a este progreso efectivo.
La curva de relajación se utiliza con el interpolador, la función virtual interpolated() y la duración de la animación para controlar cómo cambia el valor actual a medida que avanza la animación.
Funciones de acceso:
| QEasingCurve | easingCurve() const |
| void | setEasingCurve(const QEasingCurve &easing) |
endValue : QVariant
Esta propiedad describe el valor final de la animación
Esta propiedad describe el valor final de la animación.
Funciones de acceso:
| QVariant | endValue() const |
| void | setEndValue(const QVariant &value) |
Véase también startValue.
startValue : QVariant
Esta propiedad describe el valor de inicio opcional de la animación
Esta propiedad describe el valor de inicio opcional de la animación. Si se omite, o si se asigna un QVariant nulo como valor de inicio, la animación utilizará la posición actual del final cuando se inicie la animación.
Funciones de acceso:
| QVariant | startValue() const |
| void | setStartValue(const QVariant &value) |
Véase también endValue.
Documentación de funciones miembro
QVariantAnimation::QVariantAnimation(QObject *parent = nullptr)
Construye un objeto QVariantAnimation. parent se pasa al constructor de QAbstractAnimation.
[virtual noexcept] QVariantAnimation::~QVariantAnimation()
Destruye la animación.
[override virtual protected] bool QVariantAnimation::event(QEvent *event)
Reimplementa: QAbstractAnimation::event(QEvent *event).
[virtual protected] QVariant QVariantAnimation::interpolated(const QVariant &from, const QVariant &to, qreal progress) const
Esta función virtual devuelve la interpolación lineal entre las variantes from y to, en progress, normalmente un valor entre 0 y 1. Puedes reimplementar esta función en una subclase de QVariantAnimation para proporcionar tu propio algoritmo de interpolación.
Tenga en cuenta que para que la interpolación funcione con un QEasingCurve que devuelva un valor menor que 0 o mayor que 1 (como QEasingCurve::InBack) debe asegurarse de que puede extrapolar. Si la semántica del tipo de datos no permite la extrapolación, esta función debería manejar esta situación con elegancia.
Deberías llamar a la implementación QVariantAnimation de esta función si quieres que tu clase maneje los tipos ya soportados por Qt (ver la descripción de la clase QVariantAnimation para una lista de los tipos soportados).
Véase también QEasingCurve.
QVariant QVariantAnimation::keyValueAt(qreal step) const
Devuelve el valor del fotograma clave para el step dado . El step dado debe estar en el rango de 0 a 1. Si no hay KeyValue para step, devuelve un QVariant inválido.
Véase también keyValues() y setKeyValueAt().
QVariantAnimation::KeyValues QVariantAnimation::keyValues() const
Devuelve los fotogramas clave de esta animación.
Véase también keyValueAt() y setKeyValues().
void QVariantAnimation::setKeyValueAt(qreal step, const QVariant &value)
Crea un fotograma clave en step con value. El step dado debe estar en el rango de 0 a 1.
Véase también setKeyValues() y keyValueAt().
void QVariantAnimation::setKeyValues(const QVariantAnimation::KeyValues &keyValues)
Sustituye el conjunto actual de fotogramas clave por el dado keyValues. el paso de los fotogramas clave debe estar en el rango de 0 a 1.
Véase también keyValues() y keyValueAt().
[override virtual protected] void QVariantAnimation::updateCurrentTime(int)
Reimplementa: QAbstractAnimation::updateCurrentTime(int currentTime).
[virtual protected] void QVariantAnimation::updateCurrentValue(const QVariant &value)
Esta función virtual es llamada cada vez que cambia el valor actual de la animación. El argumento value es el nuevo valor actual.
La implementación de la clase base no hace nada.
Ver también currentValue.
[override virtual protected] void QVariantAnimation::updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
Reimplementa: QAbstractAnimation::updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState).
[signal] void QVariantAnimation::valueChanged(const QVariant &value)
QVariantAnimation emite esta señal cada vez que cambia la dirección value actual.
Nota: Señal notificadora para la propiedad currentValue.
Véase también currentValue, startValue, y endValue.
No miembros relacionados
template <typename T> void qRegisterAnimationInterpolator(QVariant (*)(const T &, const T &, qreal) func)
Registra un interpolador personalizado func para el tipo de plantilla T. El interpolador debe ser registrado antes de construir la animación. Para anular el registro (y utilizar el interpolador por defecto) establece func a nullptr.
Nota: Esta función es thread-safe.
© 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.