En esta página

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 width y height )
  • 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 valor
  • list debe 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:

bool

Valor binario verdadero/falso

date

Valor de fecha

double

Número con punto decimal, almacenado en doble precisión

int

Número entero, por ejemplo 0, 10 o -20

list

Lista de objetos QML

real

Número con punto decimal

string

Cadena de texto de forma libre

url

Localizador de recursos

var

Tipo de propiedad genérica

variant

Tipo de propiedad genérica

void

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:

easingCurve

Valor que representa una curva de flexión

point

Valor con atributos x e y

rect

Valor con atributos x, y, anchura y altura

size

Valor con atributos de anchura y altura

Los tipos de valor proporcionados por el módulo QtQuick son:

color

Un valor de color ARGB

font

Valor de fuente con las propiedades de QFont. El tipo de fuente se refiere a un valor de fuente con las propiedades de QFont

matrix4x4

Un tipo matrix4x4 es una matriz de 4 filas y 4 columnas

quaternion

Un tipo quaternion tiene atributos escalares, x, y, z

vector2d

Un tipo vector2d tiene atributos x e y

vector3d

Valor con atributos x, y, y z

vector4d

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.