En esta página

PropertyChanges QML Type

Describe nuevas propiedades o valores para un estado. Más...

Import Statement: import QtQuick

Propiedades

Descripción detallada

PropertyChanges se utiliza para definir los valores de propiedad o bindings en un State. Esto permite cambiar los valores de propiedad de un elemento cuando cambia entre estados.

Para crear un objeto PropertyChanges, únalo a las propiedades del elemento de destino como lo haría con las propiedades locales. De esta forma puede definir los nuevos valores de propiedad o bindings. Por ejemplo:

import QtQuick

Item {
    id: container
    width: 300; height: 300

    Rectangle {
        id: rect
        width: 100; height: 100
        color: "red"

        MouseArea {
           id: mouseArea
           anchors.fill: parent
        }

        states: State {
           name: "resized"; when: mouseArea.pressed
           PropertyChanges {
               rect {
                   color: "blue"
                   height: container.height
               }
           }
        }
    }
}

Cuando se pulsa el ratón, Rectangle cambia al estado redimensionado. En este estado, el objeto PropertyChanges establece el color del rectángulo a azul y el valor de height al de container.height.

Tenga en cuenta que esto vincula automáticamente rect.height a container.height en el estado redimensionado. Si no debe establecerse un enlace de propiedades, y la altura sólo debe establecerse al valor de container.height en el momento del cambio de estado, establezca la propiedad explicit a true.

Un objeto PropertyChanges también puede sobrescribir el manejador de señales por defecto de un objeto para implementar un manejador de señales específico para el nuevo estado:

PropertyChanges {
    myMouseArea.onClicked: doSomethingDifferent()
}

Nota: PropertyChanges se puede utilizar para cambiar los márgenes de anclaje, pero no otros valores de anclaje; utilice AnchorChanges para esto en su lugar. Del mismo modo, para cambiar el valor de parent de Item, utilice ParentChange.

Restablecer valores de propiedad

El valor undefined puede utilizarse para restablecer el valor de propiedad de un estado. En el siguiente ejemplo, cuando myText cambia al estado widerText, su propiedad width se restablece, dando al texto su anchura natural y mostrando toda la cadena en una sola línea.

Rectangle {
    width: 300; height: 200

    Text {
        id: myText
        width: 50
        wrapMode: Text.WordWrap
        text: "a text string that is longer than 50 pixels"

        states: State {
            name: "widerText"
            PropertyChanges { myText.width: undefined }
        }
    }

    MouseArea {
        anchors.fill: parent
        onClicked: myText.state = "widerText"
    }
}

Cambios inmediatos de propiedad en las transiciones

Cuando se utilizan transiciones para animar cambios de estado, animan las propiedades desde sus valores en el estado actual a los definidos en el nuevo estado (tal y como se definen en los objetos PropertyChanges). Sin embargo, a veces es deseable establecer el valor de una propiedad inmediatamente durante una Transition, sin animación; en estos casos, se puede utilizar el tipo PropertyAction para forzar un cambio de propiedad inmediato.

Consulte la documentación de PropertyAction para más detalles.

Nota: Las propiedades visible y enabled de Item no se comportan exactamente igual que otras propiedades de PropertyChanges. Dado que estas propiedades pueden cambiarse implícitamente a través del estado de su padre, deben establecerse explícitamente en todos los PropertyChanges. Un elemento seguirá sin estar habilitado/visible si uno de sus padres no está habilitado o visible.

Nota: Para compatibilidad con Qt 5, también se pueden especificar PropertyChanges utilizando la propiedad target y nombres de propiedades simples sin IDs. Por ejemplo: PropertyChanges { target: myItem; x: 15 }. Se recomienda utilizar el formulario con ID en lugar de target. También puede ser necesario utilizar el formulario con target si el archivo se va a editar con Qt Design Studio. Tenga en cuenta que Qt Design Studio también impone una serie de restricciones adicionales sobre los archivos con los que puede trabajar.

Véase también el ejemplo Estados,Qt Quick Estados, y Qt Qml.

Documentación de propiedades

explicit : bool

Si explicit se establece en true, las vinculaciones se interpretarán como asignaciones. La expresión sólo se evaluará una vez y no se producirán actualizaciones, aunque cambien las dependencias.

En el siguiente ejemplo, la adición de explicit evita que myItem.width se vincule a parent.width. En su lugar, se le asigna el valor de parent.width en el momento del cambio de estado.

PropertyChanges {
    target: myItem
    explicit: true
    width: parent.width
}

Por defecto, explicit es falso.

restoreEntryValues : bool

Esta propiedad mantiene si los valores anteriores deben ser restaurados al abandonar el estado.

El valor por defecto es true. Establecer este valor a false crea un estado temporal que tiene efectos permanentes en los valores de las propiedades.

target : QtObject

Esta propiedad contiene el objeto que contiene las propiedades a modificar.

Nota: Generalmente no es necesario utilizar esta propiedad. Sólo existe por compatibilidad con Qt 5 y para compatibilidad con Qt Design Studio.

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