var QML Value Type
un tipo de propiedad genérico. Más...
Descripción detallada
El tipo var es un tipo de propiedad genérico que puede referirse a cualquier tipo de datos.
Es equivalente a una variable normal de JavaScript. Por ejemplo, las propiedades var pueden almacenar números, cadenas, objetos, matrices y funciones:
Item { property var aNumber: 100 property var aBool: false property var aString: "Hello world!" property var anotherString: String("#FF008800") property var aColor: Qt.rgba(0.2, 0.3, 0.4, 0.5) property var aRect: Qt.rect(10, 10, 10, 10) property var aPoint: Qt.point(10, 10) property var aSize: Qt.size(10, 10) property var aVector3d: Qt.vector3d(100, 100, 100) property var anArray: [1, 2, 3, "four", "five", (function() { return "six"; })] property var anObject: { "foo": 10, "bar": 20 } property var aFunction: (function() { return "one"; }) }
Semántica de la notificación de cambios
Es importante tener en cuenta que los cambios en las propiedades normales de los objetos JavaScript asignados a una propiedad var no provocarán actualizaciones de los enlaces que acceden a ellas. El ejemplo siguiente mostrará "El coche tiene 4 ruedas", ya que el cambio en la propiedad wheels no provocará la reevaluación del binding asignado a la propiedad "text":
Item { property var car: new Object({wheels: 4}) Text { text: "The car has " + car.wheels + " wheels"; } Component.onCompleted: { car.wheels = 6; } }
Si en cambio el manejador onCompleted tuviera "car = new Object({wheels: 6})" entonces el texto se actualizaría para decir "El coche tiene 6 ruedas", ya que la propia propiedad car se modificaría, lo que provoca que se emita una notificación de cambio.
Semántica de inicialización del valor de la propiedad
La sintaxis QML define que las llaves a la derecha de una asignación de inicialización de valor de propiedad denotan una asignación vinculante. Esto puede resultar confuso al inicializar una propiedad var, ya que las llaves vacías en JavaScript pueden indicar un bloque de expresión o una declaración de objeto vacía. Si desea inicializar una propiedad var con un valor de objeto vacío, debe encerrar las llaves entre paréntesis.
Las propiedades de tipo var son undefined por defecto.
Por ejemplo:
Item { property var first: {} // nothing = undefined property var second: {{}} // empty expression block = undefined property var third: ({}) // empty object }
En el ejemplo anterior, la propiedad first está vinculada a una expresión vacía, cuyo resultado es indefinido. La propiedad second está ligada a una expresión que contiene un único bloque de expresión vacío ("{}"), cuyo resultado es igualmente indefinido. La propiedad third está ligada a una expresión que se evalúa como una declaración de objeto vacía, y por tanto la propiedad se inicializará con ese valor de objeto vacío.
De forma similar, dos puntos en JavaScript puede ser tanto una asignación de valor a una propiedad de objeto, como una etiqueta de código. Por lo tanto, inicializar una propiedad var con una declaración de objeto también puede requerir paréntesis:
Item { property var first: { example: 'true' } // example is interpreted as a label property var second: ({ example: 'true' }) // example is interpreted as a property property var third: { 'example': 'true' } // example is interpreted as a property Component.onCompleted: { console.log(first.example) // prints 'undefined', as "first" was assigned a string console.log(second.example) // prints 'true' console.log(third.example) // prints 'true' } }
Véase también Tipos de valor QML.
© 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.