En esta página

PropertyAnimation QML Type

Anima los cambios en los valores de las propiedades. Más...

Propiedades

Descripción detallada

PropertyAnimation proporciona una forma de animar los cambios en el valor de una propiedad.

Se puede utilizar para definir animaciones de varias maneras:

  • En un Transition

    Por ejemplo, para animar cualquier objeto que haya cambiado sus propiedades x o y como resultado de un cambio de estado, utilizando una curva de relajación InOutQuad:

    Rectangle {
        id: rect
        width: 100; height: 100
        color: "red"
    
        states: State {
            name: "moved"
            PropertyChanges { target: rect; x: 50 }
        }
    
        transitions: Transition {
            PropertyAnimation { properties: "x,y"; easing.type: Easing.InOutQuad }
        }
    }
  • En un Behavior

    Por ejemplo, para animar todos los cambios de la propiedad x de un rectángulo:

    Rectangle {
        width: 100; height: 100
        color: "red"
    
        Behavior on x { PropertyAnimation {} }
    
        MouseArea { anchors.fill: parent; onClicked: parent.x = 50 }
    }
  • Como fuente de valores de propiedad

    Por ejemplo, para animar repetidamente la propiedad x del rectángulo:

    Rectangle {
        width: 100; height: 100
        color: "red"
    
        SequentialAnimation on x {
            loops: Animation.Infinite
            PropertyAnimation { to: 50 }
            PropertyAnimation { to: 0 }
        }
    }
  • En un controlador de señal

    Por ejemplo, para desvanecer theObject al hacer clic:

    MouseArea {
        anchors.fill: theObject
        onClicked: PropertyAnimation { target: theObject; property: "opacity"; to: 0 }
    }
  • Independiente

    Por ejemplo, para animar la propiedad width de rect durante 500ms, desde su ancho actual hasta 30:

    Rectangle {
        id: theRect
        width: 100; height: 100
        color: "red"
    
        // this is a standalone animation, it's not running by default
        PropertyAnimation { id: animation;
                            target: theRect;
                            property: "width";
                            to: 30;
                            duration: 500 }
    
        MouseArea { anchors.fill: parent; onClicked: animation.running = true }
    }

Dependiendo de cómo se utilice la animación, el conjunto de propiedades utilizadas normalmente será diferente. Para más información, consulte la documentación de cada propiedad, así como la introducción sobre Animación y transiciones en Qt Quick.

Tenga en cuenta que PropertyAnimation hereda el tipo abstracto Animation. Este incluye propiedades y métodos adicionales para controlar la animación.

Modificando animaciones en ejecución

Desde Qt 6.4, es posible establecer las propiedades from, to, duration, y easing en una animación de nivel superior mientras se está ejecutando. La animación tendrá en cuenta los cambios en el siguiente bucle.

Ver también Animación y Transiciones en Qt Quick y Qt Quick Ejemplos - Animación.

Documentación de Propiedades

duration : int

Esta propiedad contiene la duración de la animación, en milisegundos.

El valor por defecto es 250.

easing group

easing.amplitude : real

easing.bezierCurve : list<real>

easing.overshoot : real

easing.period : real

easing.type : enumeration

Especifica la curva de flexión utilizada para la animación.

Para especificar una curva de servidumbre es necesario especificar al menos el tipo. Para algunas curvas también se puede especificar la amplitud, el periodo y/o el rebasamiento (más detalles después de la tabla). La curva por defecto es Easing.Linear.

PropertyAnimation { properties: "y";
                    easing.type: Easing.InOutElastic;
                    easing.amplitude: 2.0;
                    easing.period: 1.5 }

Los tipos disponibles son:

Easing.LinearCurva de relajación para una función lineal (t): la velocidad es constante.Curva de flexibilización lineal
Easing.InQuadCurva de relajación para una función cuadrática (t^2): aceleración desde velocidad cero.Curva de flexibilización InQuad
Easing.OutQuadCurva de relajación para una función cuadrática (t^2): desaceleración hasta velocidad cero.Curva de flexibilización OutQuad
Easing.InOutQuadCurva de relajación de una función cuadrática (t^2): aceleración hasta la mitad y, a continuación, deceleración.Curva de flexión InOutQuad
Easing.OutInQuadCurva de relajación de una función cuadrática (t^2): desaceleración hasta la mitad y, a continuación, aceleración.Curva de relajación OutInQuad
Easing.InCubicCurva de relajación de una función cúbica (t^3): aceleración a partir de la velocidad cero.Curva de flexión InCubic
Easing.OutCubicCurva de relajación de una función cúbica (t^3): desaceleración hasta velocidad cero.Curva de relajación OutCubic
Easing.InOutCubicCurva de relajación de una función cúbica (t^3): aceleración hasta la mitad y, a continuación, deceleración.Curva de flexión InOutCubic
Easing.OutInCubicCurva de relajación de una función cúbica (t^3): desaceleración hasta la mitad y, a continuación, aceleración.OutInCubic curva de relajación
Easing.InQuartCurva de relajación de una función cuártica (t^4): aceleración a partir de la velocidad cero.Curva de flexibilización InQuart
Easing.OutQuartCurva de relajación de una función cuártica (t^4): desaceleración hasta velocidad cero.Curva de flexibilización OutQuart
Easing.InOutQuartCurva decreciente de una función cuádruple (t^4): aceleración hasta la mitad y, a continuación, deceleración.Curva de flexibilización InOutQuart
Easing.OutInQuartCurva decreciente de una función cuártica (t^4): desaceleración hasta la mitad y, a continuación, aceleración.Curva de relajación OutInQuart
Easing.InQuintCurva de relajación de una función quíntica (t^5): aceleración a partir de la velocidad cero.Curva de flexibilización InQuint
Easing.OutQuintCurva de relajación de una función quíntica (t^5): desaceleración hasta velocidad cero.Curva de flexibilización OutQuint
Easing.InOutQuintCurva de progresión de una función quíntica (t^5): aceleración hasta la mitad y, a continuación, deceleración.Curva de flexión InOutQuint
Easing.OutInQuintCurva de progresión de una función quíntica (t^5): desaceleración hasta la mitad y, a continuación, aceleración.Curva de relajación OutInQuint
Easing.InSineCurva de relajación de una función sinusoidal (sin(t)): aceleración a partir de velocidad cero.Curva de flexibilización InSine
Easing.OutSineCurva de relajación de una función sinusoidal (sin(t)): desaceleración hasta velocidad cero.Curva de relajación OutSine
Easing.InOutSineCurva de relajación de una función sinusoidal (sin(t)): aceleración hasta la mitad y, a continuación, deceleración.Curva de relajación InOutSine
Easing.OutInSineCurva de relajación de una función sinusoidal (sin(t)): desaceleración hasta la mitad y, a continuación, aceleración.Curva de relajación OutInSine
Easing.InExpoCurva de relajación de una función exponencial (2^t): aceleración a partir de la velocidad cero.Curva de flexibilización de InExpo
Easing.OutExpoCurva de relajación de una función exponencial (2^t): desaceleración hasta velocidad cero.Curva de relajación de OutExpo
Easing.InOutExpoCurva de relajación de una función exponencial (2^t): aceleración hasta la mitad y, a continuación, deceleración.Curva de relajación InOutExpo
Easing.OutInExpoCurva de relajación de una función exponencial (2^t): desaceleración hasta la mitad y, a continuación, aceleración.Curva de relajación OutInExpo
Easing.InCircCurva de relajación de una función circular (sqrt(1-t^2)): aceleración desde velocidad cero.Curva de flexibilización InCirc
Easing.OutCircCurva de relajación de una función circular (sqrt(1-t^2)): desaceleración hasta velocidad cero.Curva de flexibilización OutCirc
Easing.InOutCircCurva de relajación de una función circular (sqrt(1-t^2)): aceleración hasta la mitad y, a continuación, deceleración.Curva de flexibilización InOutCirc
Easing.OutInCircCurva de relajación de una función circular (sqrt(1-t^2)): desaceleración hasta la mitad y, a continuación, aceleración.Curva de flexibilización OutInCirc
Easing.InElasticCurva de relajación para una función elástica (onda sinusoidal exponencialmente decreciente): aceleración desde velocidad cero.
La amplitud del pico puede ajustarse con el parámetro amplitud, y el periodo de decaimiento con el parámetro periodo.
EnCurva de flexibilización
Easing.OutElasticCurva de relajación para una función elástica (onda sinusoidal exponencialmente decreciente): desaceleración a velocidad cero.
La amplitud del pico puede ajustarse con el parámetro amplitud y el periodo de decaimiento con el parámetro periodo.
FueraCurva de flexibilización
Easing.InOutElasticCurva de atenuación de una función elástica (sinusoidal exponencialmente decreciente): aceleración hasta la mitad y, a continuación, deceleración.InOutCurva de flexibilización
Easing.OutInElasticCurva de atenuación de una función elástica (senoidal exponencialmente decreciente): desaceleración hasta la mitad y, a continuación, aceleración.OutInCurva de flexibilización elástica
Easing.InBackCurva de relajación de una función cúbica (s+1)*t^3 - s*t^2) de retroceso: aceleración a partir de la velocidad cero.Curva de flexibilización InBack
Easing.OutBackCurva de relajación para una espalda (función cúbica de rebasamiento: (s+1)*t^3 - s*t^2) relajación de salida: desaceleración a velocidad cero.Curva de relajación OutBack
Easing.InOutBackCurva de relajación para una espalda (función cúbica de rebasamiento: (s+1)*t^3 - s*t^2) aceleración/desaceleración: aceleración hasta la mitad, luego desaceleración.Curva de flexión InOutBack
Easing.OutInBackCurva de relajación para un rebote (función cúbica de relajación: (s+1)*t^3 - s*t^2) relajación de entrada/salida: desaceleración hasta la mitad, luego aceleración.Curva de flexión OutInBack
Easing.InBounceCurva de relajación para una función de rebote (rebote parabólico exponencialmente decreciente): aceleración desde velocidad cero.Curva de flexibilización InBounce
Easing.OutBounceCurva de relajación para una función de rebote (rebote parabólico exponencialmente decreciente): desaceleración hasta velocidad cero.Curva de flexibilización OutBounce
Easing.InOutBounceCurva de relajación para una función de rebote (rebote parabólico exponencialmente decreciente): aceleración hasta la mitad, luego desaceleración.Curva de flexibilización InOutBounce
Easing.OutInBounceCurva 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.Curva de flexibilización OutInBounce
Easing.BezierSplineCurva de relajación personalizada definida por la propiedad easing.bezierCurve.

easing.amplitude sólo es aplicable para curvas de rebote y elásticas (curvas de tipo Easing.InBounce, Easing.OutBounce, Easing.InOutBounce, Easing.OutInBounce, Easing.InElastic, Easing.OutElastic, Easing.InOutElastic o Easing.OutInElastic).

easing.overshoot sólo es aplicable si easing.type es Easing.InBack, Easing.OutBack, Easing.InOutBack o Easing.OutInBack.

easing.period sólo es aplicable si easing.type es: Easing.InElastic, Easing.OutElastic, Easing.InOutElastic o Easing.OutInElastic.

easing.bezierCurve sólo es aplicable si easing.type es: Easing.BezierSpline. Esta propiedad es una lista<real> que contiene grupos de tres puntos que definen una curva de 0,0 a 1,1 - control1, control2, punto final: [cx1, cy1, cx2, cy2, endx, endy, ...]. El último punto debe ser 1,1.

Consulte las curvas de suavizado para ver una demostración de los distintos ajustes de suavizado.

exclude : list<QtObject> [read-only]

Esta propiedad contiene los elementos que no se verán afectados por esta animación.

Véase también PropertyAnimation::targets.

from : variant

Esta propiedad contiene el valor inicial de la animación.

Si PropertyAnimation se define dentro de Transition o Behavior, este valor es por defecto el valor definido en el estado inicial de Transition, o el valor actual de la propiedad en el momento en que se activa Behavior.

Véase también Animación y transiciones en Qt Quick.

properties : string

property : string

target : QtObject

targets : list<QtObject> [read-only]

Estas propiedades se utilizan como un conjunto para determinar qué propiedades deben animarse. Las formas singular y plural son funcionalmente idénticas, por ejemplo

NumberAnimation { target: theItem; property: "x"; to: 500 }

tiene el mismo significado que

NumberAnimation { targets: theItem; properties: "x"; to: 500 }

Las formas singulares están ligeramente optimizadas, por lo que si sólo tiene un único objetivo/propiedad que animar debería intentar utilizarlas.

La propiedad targets permite establecer múltiples objetivos. Por ejemplo, esto anima la propiedad x tanto de itemA como de itemB:

NumberAnimation { targets: [itemA, itemB]; properties: "x"; to: 500 }

En muchos casos no es necesario especificar explícitamente estas propiedades, ya que pueden deducirse del marco de animación:

Fuente de valor / ComportamientoCuando una animación se utiliza como fuente de valor o en un Comportamiento, tanto el objetivo por defecto como el nombre de la propiedad a animar pueden ser inferidos.
Rectangle {
    id: theRect
    width: 100; height: 100
    color: Qt.rgba(0,0,1)
    NumberAnimation on x { to: 500; loops: Animation.Infinite } //animate theRect's x property
    Behavior on y { NumberAnimation {} } //animate theRect's y property
}
TransiciónCuando se utiliza en una transición, se supone que una animación de propiedad coincide con todos los objetivos pero no con ninguna propiedad. En la práctica, esto significa que es necesario especificar al menos las propiedades para que la animación haga algo.
Rectangle {
    id: theRect
    width: 100; height: 100
    color: Qt.rgba(0,0,1)
    Item { id: uselessItem }
    states: State {
        name: "state1"
        PropertyChanges {
            theRect {
                x: 200
                y: 200
                z: 4
            }
            uselessItem {
                x: 10
                y: 10
                z: 2
            }
        }
    }
    transitions: Transition {
        //animate both theRect's and uselessItem's x and y to their final values
        NumberAnimation { properties: "x,y" }

        //animate theRect's z to its final value
        NumberAnimation { target: theRect; property: "z" }
    }
}
IndependienteCuando una animación se utiliza de forma independiente, es necesario especificar explícitamente tanto el objetivo como la propiedad.
Rectangle {
    id: theRect
    width: 100; height: 100
    color: Qt.rgba(0,0,1)
    //need to explicitly specify target and property
    NumberAnimation { id: theAnim; target: theRect; property: "x"; to: 500 }
    MouseArea {
        anchors.fill: parent
        onClicked: theAnim.start()
    }
}

Como se ve en el ejemplo anterior, las propiedades se especifican como una cadena separada por comas de nombres de propiedades a animar.

Véase también exclude y Animación y transiciones en Qt Quick.

to : variant

Esta propiedad contiene el valor final de la animación.

Si PropertyAnimation se define dentro de Transition o Behavior, este valor es por defecto el valor definido en el estado final de Transition, o el valor del cambio de propiedad que desencadenó Behavior.

Véase también Animación y transiciones en Qt Quick.

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