PropertyChanges QML Type
Describe nuevas propiedades o valores para un estado. Más...
| Import Statement: | import QtQuick |
Propiedades
- explicit : bool
- restoreEntryValues : bool
- target : QtObject
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.