Tipos de valor QML
QML admite tipos de valor incorporados y personalizados.
Un tipo de valor es aquel que conceptualmente se pasa por valor en lugar de por referencia, como int o string. Esto contrasta con los tipos de objeto QML. Los tipos de objeto se transmiten por referencia. Si asigna una instancia de un tipo de objeto a dos propiedades diferentes, ambas propiedades tendrán el mismo valor. La modificación del objeto se refleja en ambas propiedades. Si asigna una instancia de un tipo de valor a dos propiedades diferentes, las propiedades llevan valores separados. Si se modifica una de ellas, la otra permanece igual. Los tipos de valor sólo se pasan conceptualmente por valor, ya que debe seguir siendo posible interactuar con ellos como si fueran objetos JavaScript. Para facilitar esto, en realidad se pasan como referencias de tipo valor cuando se accede a ellos desde código JavaScript.
A diferencia de un tipo de objeto, un tipo de valor no puede utilizarse para declarar objetos QML: no es posible, por ejemplo, declarar un objeto int{} o un objeto size{}.
Los tipos de valor pueden utilizarse para hacer referencia a:
- Un único valor (por ejemplo, int hace referencia a un único número).
- Un valor que contiene propiedades y métodos (por ejemplo, size se refiere a un valor con propiedades
widthyheight) - El tipo genérico var. Puede contener valores de cualquier otro tipo, pero es en sí mismo un tipo de valor.
Cuando una variable o propiedad contiene un tipo de valor y se asigna a otra variable o propiedad, se realiza una copia del valor.
Tipos de valor disponibles
Algunos tipos de valor son soportados por el motor por defecto y no requieren una sentencia import para ser utilizados, mientras que otros requieren que el cliente importe el módulo que los proporciona. Todos los tipos de valor enumerados a continuación pueden utilizarse como tipo property en un documento QML, con las siguientes excepciones:
void, que marca la ausencia de un valorlistdebe utilizarse junto con un objeto o tipo de valor como elemento
Tipos de valor incorporados proporcionados por el lenguaje QML
A continuación se enumeran los tipos de valor incorporados admitidos de forma nativa en el lenguaje Q ML:
Valor binario verdadero/falso | |
Valor de fecha | |
Número con punto decimal, almacenado en doble precisión | |
Número entero, por ejemplo 0, 10 o -20 | |
Lista de objetos QML | |
Número con punto decimal | |
Cadena de texto de forma libre | |
Localizador de recursos | |
Tipo de propiedad genérica | |
Tipo de propiedad genérica | |
Tipo de valor vacío |
Tipos de valor proporcionados por módulos QML
Los módulos QML pueden ampliar el lenguaje QML con más tipos de valor.
Por ejemplo, los tipos de valor proporcionados por el módulo QtQml son:
Valor que representa una curva de flexión | |
Valor con atributos x e y | |
Valor con atributos x, y, anchura y altura | |
Valor con atributos de anchura y altura |
Los tipos de valor proporcionados por el módulo QtQuick son:
Un valor de color ARGB | |
Valor de fuente con las propiedades de QFont. El tipo de fuente se refiere a un valor de fuente con las propiedades de QFont | |
Un tipo matrix4x4 es una matriz de 4 filas y 4 columnas | |
Un tipo quaternion tiene atributos escalares, x, y, z | |
Un tipo vector2d tiene atributos x e y | |
Valor con atributos x, y, y z | |
Un tipo vector4d tiene atributos x, y, z y w |
El objeto global Qt proporciona useful functions para manipular los valores de los tipos de valor para los atributos Qt Qml y Qt Quick .
Otros módulos Qt documentarán sus tipos de valor en sus respectivas páginas de módulo.
Usted puede definir sus propios tipos de valor como se describe en Definición de tipos QML desde C++. Para utilizar los tipos proporcionados por un módulo QML en particular, los clientes deben importar dicho módulo en sus documentos QML.
Comportamiento de cambio de propiedad para tipos de valor
Algunos tipos de valor tienen propiedades: por ejemplo, el tipo font tiene propiedades pixelSize, family y bold. A diferencia de las propiedades de los tipos de objeto, las propiedades de los tipos de valor no proporcionan sus propias señales de cambio de propiedad. Sólo es posible crear un manejador de señales de cambio de propiedad para la propia propiedad del tipo valor:
Text {
// invalid!
onFont.pixelSizeChanged: doSomething()
// also invalid!
font {
onPixelSizeChanged: doSomething()
}
// but this is ok
onFontChanged: doSomething()
}Tenga en cuenta, sin embargo, que una señal de cambio de propiedad para un tipo de valor se emite siempre que cualquiera de sus atributos haya cambiado, así como cuando la propia propiedad cambia. Tomemos como ejemplo el siguiente código:
Text { onFontChanged: console.log("font changed") Text { id: otherText } focus: true // changing any of the font attributes, or reassigning the property // to a different font value, will invoke the onFontChanged handler Keys.onDigit1Pressed: font.pixelSize += 1 Keys.onDigit2Pressed: font.b = !font.b Keys.onDigit3Pressed: font = otherText.font }
Por el contrario, las propiedades de un tipo objeto emiten sus propias señales de cambio de propiedad, y un manejador de señal de cambio de propiedad para una propiedad de tipo objeto sólo se invoca cuando la propiedad se reasigna a un valor de objeto diferente.
Véase también El sistema de tipos 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.