QAbstractAnimation Class
La clase QAbstractAnimation es la base de todas las animaciones. Más...
| Cabecera: | #include <QAbstractAnimation> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| Hereda: | QObject |
| Heredado por: |
- Lista de todos los miembros, incluyendo los heredados
- QAbstractAnimation es parte de Animation Framework.
Tipos Públicos
| enum | DeletionPolicy { KeepWhenStopped, DeleteWhenStopped } |
| enum | Direction { Forward, Backward } |
| enum | State { Stopped, Paused, Running } |
Propiedades
|
Funciones públicas
| QAbstractAnimation(QObject *parent = nullptr) | |
| virtual | ~QAbstractAnimation() |
| QBindable<int> | bindableCurrentLoop() const |
| QBindable<int> | bindableCurrentTime() |
| QBindable<QAbstractAnimation::Direction> | bindableDirection() |
| QBindable<int> | bindableLoopCount() |
| QBindable<QAbstractAnimation::State> | bindableState() const |
| int | currentLoop() const |
| int | currentLoopTime() const |
| int | currentTime() const |
| QAbstractAnimation::Direction | direction() const |
| virtual int | duration() const = 0 |
| QAnimationGroup * | group() const |
| int | loopCount() const |
| void | setDirection(QAbstractAnimation::Direction direction) |
| void | setLoopCount(int loopCount) |
| QAbstractAnimation::State | state() const |
| int | totalDuration() const |
Ranuras públicas
| void | pause() |
| void | resume() |
| void | setCurrentTime(int msecs) |
| void | setPaused(bool paused) |
| void | start(QAbstractAnimation::DeletionPolicy policy = KeepWhenStopped) |
| void | stop() |
Señales
| void | currentLoopChanged(int currentLoop) |
| void | directionChanged(QAbstractAnimation::Direction newDirection) |
| void | finished() |
| void | stateChanged(QAbstractAnimation::State newState, QAbstractAnimation::State oldState) |
Funciones protegidas
| virtual void | updateCurrentTime(int currentTime) = 0 |
| virtual void | updateDirection(QAbstractAnimation::Direction direction) |
| virtual void | updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState) |
Funciones protegidas reimplementadas
| virtual bool | event(QEvent *event) override |
Descripción detallada
Esta clase define las funciones para la funcionalidad compartida por todas las animaciones. Al heredar esta clase, puedes crear animaciones personalizadas que se conectan con el resto del framework de animación.
El progreso de una animación viene dado por su tiempo actual (currentLoopTime())), que se mide en milisegundos desde el inicio de la animación (0) hasta su final (duration())). El valor se actualiza automáticamente mientras se ejecuta la animación. También puede establecerse directamente con setCurrentTime().
En cualquier momento una animación se encuentra en uno de estos tres estados: Running, Stopped, o Paused-como se define en el enum State. El estado actual puede cambiarse llamando a start(), stop(), pause(), o resume(). Una animación siempre reiniciará su current time cuando se inicie. Si se pausa, continuará con el mismo tiempo actual cuando se reanude. Cuando una animación se detiene, no se puede reanudar, pero mantendrá su tiempo actual (hasta que se inicie de nuevo). QAbstractAnimation emitirá stateChanged() cada vez que cambie su estado.
Una animación puede repetirse cualquier número de veces estableciendo la propiedad loopCount. Cuando el tiempo actual de una animación alcanza su duration(), reiniciará el tiempo actual y seguirá corriendo. Una cuenta de bucle de 1 (el valor por defecto) significa que la animación se ejecutará una vez. Tenga en cuenta que una duración de -1 significa que la animación se ejecutará hasta que se detenga; el tiempo actual aumentará indefinidamente. Cuando el tiempo actual es igual a duration() y la animación está en su bucle final, se entra en el estado Stopped, y se emite la señal finished().
QAbstractAnimation proporciona funciones virtuales puras utilizadas por las subclases para seguir el progreso de la animación: duration() y updateCurrentTime(). La función duration() permite informar una duración para la animación (como se discutió anteriormente). El marco de animación llama a updateCurrentTime() cuando el tiempo actual ha cambiado. Reimplementando esta función, puedes seguir el progreso de la animación. Tenga en cuenta que ni el intervalo entre llamadas ni el número de llamadas a esta función están definidos; aunque, normalmente será de 60 actualizaciones por segundo.
Reimplementando updateState(), puedes seguir los cambios de estado de la animación, lo que es particularmente útil para animaciones que no están controladas por el tiempo.
Ver también QVariantAnimation, QPropertyAnimation, QAnimationGroup, y The Animation Framework.
Documentación de tipos de miembros
enum QAbstractAnimation::DeletionPolicy
| Constante | Valor | Descripción |
|---|---|---|
QAbstractAnimation::KeepWhenStopped | 0 | La animación no se borra cuando se detiene. |
QAbstractAnimation::DeleteWhenStopped | 1 | La animación se borrará automáticamente cuando se detenga. |
enum QAbstractAnimation::Direction
Este enum describe la dirección de la animación en el estado Running.
| Constante | Valor | Descripción |
|---|---|---|
QAbstractAnimation::Forward | 0 | El tiempo actual de la animación aumenta con el tiempo (es decir, se mueve desde 0 y hacia el final / duración). |
QAbstractAnimation::Backward | 1 | El tiempo actual de la animación disminuye con el tiempo (es decir, se mueve desde el final / duración y hacia 0). |
Véase también direction.
enum QAbstractAnimation::State
Este enum describe el estado de la animación.
| Constante | Valor | Descripción |
|---|---|---|
QAbstractAnimation::Stopped | 0 | La animación no se está ejecutando. Este es el estado inicial de QAbstractAnimation, y el estado al que vuelve QAbstractAnimation cuando finaliza. El tiempo actual permanece sin cambios hasta que se llama a setCurrentTime(), o se inicia la animación llamando a start(). |
QAbstractAnimation::Paused | 1 | La animación se pausa (es decir, se suspende temporalmente). Llamando a resume() se reanudará la actividad de la animación. |
QAbstractAnimation::Running | 2 | La animación se está ejecutando. Mientras el control está en el bucle de eventos, QAbstractAnimation actualizará su tiempo actual a intervalos regulares, llamando a updateCurrentTime() cuando sea apropiado. |
Ver también state() y stateChanged().
Documentación de propiedades
[bindable read-only] currentLoop : int
Nota: Esta propiedad soporta QProperty bindings.
Esta propiedad describe el bucle actual de la animación
Esta propiedad describe el bucle actual de la animación. Por defecto, la cuenta de bucles de la animación es 1, por lo que el bucle actual siempre será 0. Si la cuenta de bucles es 2 y la animación se ejecuta más allá de su duración, se rebobinará automáticamente y se reiniciará en el tiempo actual 0, y en el bucle actual 1, y así sucesivamente.
Cuando el bucle actual cambia, QAbstractAnimation emite la señal currentLoopChanged().
Funciones de acceso:
| int | currentLoop() const |
Señal notificadora:
| void | currentLoopChanged(int currentLoop) |
[bindable] currentTime : int
Nota: Esta propiedad soporta enlaces QProperty.
Esta propiedad contiene el tiempo actual y el progreso de la animación
Esta propiedad describe el tiempo actual de la animación. Puedes cambiar el tiempo actual llamando a setCurrentTime(), o puedes llamar a start() y dejar que la animación se ejecute, estableciendo el tiempo actual automáticamente a medida que la animación progresa.
El tiempo actual de la animación comienza en 0, y termina en totalDuration().
Nota: Puedes vincular otras propiedades a currentTime, pero no es recomendable hacerlo. A medida que la animación progresa, la hora actual se actualiza automáticamente, lo que anula sus vinculaciones.
Funciones de acceso:
| int | currentTime() const |
| void | setCurrentTime(int msecs) |
Véase también loopCount y currentLoopTime().
[bindable] direction : Direction
Nota: Esta propiedad soporta enlaces QProperty.
Esta propiedad contiene la dirección de la animación cuando está en estado Running.
Esta dirección indica si el tiempo se mueve desde 0 hacia la duración de la animación, o desde el valor de la duración y hacia 0 después de llamar a start().
Por defecto, esta propiedad se establece en Forward.
Funciones de acceso:
| QAbstractAnimation::Direction | direction() const |
| void | setDirection(QAbstractAnimation::Direction direction) |
Señal del notificador:
| void | directionChanged(QAbstractAnimation::Direction newDirection) |
[read-only] duration : int
Esta propiedad contiene la duración de la animación.
Si la duración es -1, significa que la duración no está definida. En este caso, loopCount es ignorado.
Funciones de acceso:
| virtual int | duration() const = 0 |
[bindable] loopCount : int
Nota: Esta propiedad soporta QProperty bindings.
Esta propiedad contiene el número de bucles de la animación
Esta propiedad describe la cuenta de bucles de la animación como un entero. Por defecto este valor es 1, indicando que la animación debe ejecutarse una sola vez, y luego detenerse. Cambiándolo puedes dejar que la animación se repita varias veces. Con un valor de 0, la animación no se ejecutará en absoluto, y con un valor de -1, la animación se repetirá para siempre hasta que se detenga. No es compatible tener un bucle en una animación que tiene una duración indefinida. Sólo se ejecutará una vez.
Funciones de acceso:
| int | loopCount() const |
| void | setLoopCount(int loopCount) |
[bindable read-only] state : State
Nota: Esta propiedad es compatible con los enlaces QProperty.
Estado de la animación.
Esta propiedad describe el estado actual de la animación. Cuando el estado de la animación cambia, QAbstractAnimation emite la señal stateChanged().
Nota: Las actualizaciones de estado pueden causar actualizaciones de la propiedad currentTime, que, a su vez, pueden cancelar sus bindings. Por lo tanto, ten cuidado al establecer bindings a la propiedad currentTime, cuando esperes que el estado de la animación cambie.
Funciones de acceso:
| QAbstractAnimation::State | state() const |
Señal del notificador:
| void | stateChanged(QAbstractAnimation::State newState, QAbstractAnimation::State oldState) |
Documentación de funciones miembro
QAbstractAnimation::QAbstractAnimation(QObject *parent = nullptr)
Construye la clase base QAbstractAnimation, y pasa parent al constructor de QObject.
Ver también QVariantAnimation y QAnimationGroup.
[virtual noexcept] QAbstractAnimation::~QAbstractAnimation()
Detiene la animación si se está ejecutando y, a continuación, destruye QAbstractAnimation. Si la animación forma parte de QAnimationGroup, se elimina automáticamente antes de ser destruida.
[signal] void QAbstractAnimation::currentLoopChanged(int currentLoop)
QAbstractAnimation emite esta señal cada vez que cambia el bucle actual. currentLoop es el bucle actual.
Nota: Señal notificadora para la propiedad currentLoop.
Véase también currentLoop() y loopCount().
int QAbstractAnimation::currentLoopTime() const
Devuelve el tiempo actual dentro del bucle actual. Puede ir de 0 a duration().
Véase también duration() y currentTime.
[signal] void QAbstractAnimation::directionChanged(QAbstractAnimation::Direction newDirection)
QAbstractAnimation emite esta señal siempre que se ha cambiado la dirección. newDirection es la nueva dirección.
Nota: Señal notificadora de la propiedad direction.
Véase también direction.
[pure virtual] int QAbstractAnimation::duration() const
Esta función puramente virtual devuelve la duración de la animación, y define durante cuánto tiempo QAbstractAnimation debe actualizar el tiempo actual. Esta duración es local, y no incluye la cuenta de bucles.
Un valor de retorno de -1 indica que la animación no tiene una duración definida; la animación debe ejecutarse para siempre hasta que se detenga. Esto es útil para animaciones que no están dirigidas por el tiempo, o donde no se puede predecir fácilmente su duración (por ejemplo, la reproducción de audio dirigida por eventos en un juego).
Si la animación es paralela QAnimationGroup, la duración será la mayor de todas sus animaciones. Si la animación es secuencial QAnimationGroup, la duración será la suma de la duración de todas sus animaciones.
Nota: Función Getter para la propiedad duración.
Ver también loopCount.
[override virtual protected] bool QAbstractAnimation::event(QEvent *event)
Reimplementa: QObject::event(QEvent *e).
[signal] void QAbstractAnimation::finished()
QAbstractAnimation emite esta señal después de que la animación se haya detenido y haya llegado al final.
Esta señal se emite después de stateChanged().
Véase también stateChanged().
QAnimationGroup *QAbstractAnimation::group() const
Si esta animación forma parte de un grupo QAnimationGroup, esta función devuelve un puntero al grupo; en caso contrario, devuelve nullptr.
Véase también QAnimationGroup::addAnimation().
[slot] void QAbstractAnimation::pause()
Pausa la animación. Cuando la animación está en pausa, state() devuelve Pausado. El valor de currentTime permanecerá sin cambios hasta que se llame a resume() o start(). Si desea continuar desde el tiempo actual, llame a resume().
Véase también start(), state() y resume().
[slot] void QAbstractAnimation::resume()
Reanuda la animación después de haber sido pausada. Cuando la animación se reanuda, emite la señal stateChanged(). La propiedad currentTime no se modifica.
Véase también start(), pause() y state().
[slot] void QAbstractAnimation::setPaused(bool paused)
Si paused es verdadero, la animación se pausa. Si paused es falso, la animación se reanuda.
Véase también state(), pause() y resume().
[slot] void QAbstractAnimation::start(QAbstractAnimation::DeletionPolicy policy = KeepWhenStopped)
Inicia la animación. El argumento policy dice si la animación debe ser borrada o no cuando termine. Cuando la animación comienza, se emite la señal stateChanged(), y state() devuelve Running. Cuando el control alcanza el bucle de eventos, la animación se ejecutará por sí misma, llamando periódicamente a updateCurrentTime() a medida que la animación progresa.
Si la animación está detenida o ya ha llegado al final, al llamar a start() se rebobinará la animación y comenzará de nuevo desde el principio. Cuando la animación llegue al final, se detendrá o, si el nivel del bucle es superior a 1, se rebobinará y continuará desde el principio.
Si la animación ya se está ejecutando, esta función no hace nada.
Véase también stop() y state().
[signal] void QAbstractAnimation::stateChanged(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
QAbstractAnimation emite esta señal siempre que el estado de la animación haya cambiado de oldState a newState. Esta señal se emite después de llamar a la función virtual updateState().
Nota: Señal notificadora de la propiedad state.
Véase también updateState().
[slot] void QAbstractAnimation::stop()
Detiene la animación. Cuando la animación se detiene, emite la señal stateChanged(), y state() devuelve Detenido. El tiempo actual no se modifica.
Si la animación se detiene por sí sola después de llegar al final (es decir, currentLoopTime() == duration() y currentLoop() > loopCount() - 1), se emite la señal finished().
Véase también start() y state().
int QAbstractAnimation::totalDuration() const
Devuelve la duración total y efectiva de la animación, incluyendo la cuenta de bucles.
Véase también duration() y currentTime.
[pure virtual protected] void QAbstractAnimation::updateCurrentTime(int currentTime)
Esta función virtual pura es llamada cada vez que cambia el currentTime de la animación.
Véase también updateState().
[virtual protected] void QAbstractAnimation::updateDirection(QAbstractAnimation::Direction direction)
Esta función virtual es llamada por QAbstractAnimation cuando se cambia la dirección de la animación. El argumento direction es la nueva dirección.
Véase también setDirection() y direction().
[virtual protected] void QAbstractAnimation::updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
Esta función virtual es llamada por QAbstractAnimation cuando el estado de la animación pasa de oldState a newState.
© 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.