En esta página

El sistema de tipos QML

Los tipos que pueden utilizarse en la definición de una jerarquía de objetos en un documento QML pueden proceder de diversas fuentes. Pueden ser

  • proporcionados de forma nativa por el lenguaje QML
  • registrados mediante C++ por módulos QML
  • suministrados como documentos QML por módulos QML

Además, los desarrolladores de aplicaciones pueden proporcionar sus propios tipos, bien registrando tipos C++ directamente, bien definiendo componentes reutilizables en documentos QML que luego pueden importarse.

Independientemente de la procedencia de las definiciones de tipos, el motor aplicará la seguridad de tipos a las propiedades e instancias de dichos tipos.

Tipos de objeto QML

Un tipo de objeto QML es un tipo a partir del cual puede instanciarse un objeto QML. Los tipos de objeto QML se derivan de QtObject, y los proporcionan los módulos QML. Las aplicaciones pueden importar estos módulos para utilizar los tipos de objeto que proporcionan. El módulo QtQuick proporciona los tipos de objeto más comunes necesarios para crear interfaces de usuario en QML.

Por último, cada documento QML define implícitamente un tipo de objeto QML, que puede reutilizarse en otros documentos QML. Consulte la documentación sobre tipos de objeto en el sistema de tipos QML para obtener información detallada sobre los tipos de objeto.

Tipos de valor QML

El lenguaje QML admite varios tipos primitivos, como números enteros, números de coma flotante de doble precisión, cadenas y valores booleanos. Los objetos pueden tener propiedades de estos tipos, y los valores de estos tipos pueden pasarse como argumentos a los métodos de los objetos.

Consulte la documentación Tipos de valor Q ML para obtener más información sobre los tipos de valor.

Tipos de secuencia QML

Los tipos de secuencia pueden utilizarse para almacenar secuencias de valores u objetos.

Consulte la documentación sobre tipos de secuencia en el sistema de tipos QML para obtener información detallada sobre los tipos de secuencia.

Enumeraciones

Las enumeraciones se tratan como propiedades especiales de los tipos en QML.

Consulte la documentación sobre Enumeraciones QML para obtener información detallada sobre las enumeraciones.

Tipos Singleton

QML admite tipos singleton, que permiten definir un tipo del que sólo existe una instancia en cada motor QML. Los tipos singleton son útiles para proporcionar estado o funcionalidad en toda la aplicación.

Consulte Singletons en QML para obtener más detalles.

Tipos adjuntos

Las propiedades adjuntas y los manejadores de señales permiten a los tipos proporcionar propiedades y señales adicionales que pueden adjuntarse a otros objetos. Se trata de un potente mecanismo para añadir información contextual a los objetos QML.

Consulte Tipos adjuntos de QML para obtener más información.

Espacios de nombres QML

Los espacios de nombres QML pueden utilizarse para exponer enumeraciones de espacios de nombres C++.

Consulte la documentación sobre espacios de nombres en el sistema de tipos QML para obtener información detallada sobre los espacios de nombres.

Tipos JavaScript

El motor QML admite objetos y matrices JavaScript. Cualquier tipo JavaScript estándar puede crearse y almacenarse utilizando el tipo genérico var.

Por ejemplo, están disponibles los tipos estándar Date y Array, como se indica a continuación:

import QtQuick

Item {
    property var theArray: []
    property var theDate: new Date()

    Component.onCompleted: {
        for (var i = 0; i < 10; i++)
            theArray.push("Item " + i)
        console.log("There are", theArray.length, "items in the array")
        console.log("The time is", theDate.toUTCString())
    }
}

Para obtener más información, consulte Expresiones JavaScript en documentos QML.

Integración con C

Conversión de tipos de datos entre QML y C++

Al integrar QML con C++, a menudo es necesario transferir datos entre los dos entornos. El motor QML proporciona conversión automática entre tipos QML y C++ para tipos de datos comunes, mientras que los tipos personalizados requieren registro explícito.

Consulte Conversión de tipos de datos entre QML y C++ para obtener más detalles.

Interacción con objetos QML desde C++

El código C++ puede acceder a los objetos QML y manipularlos obteniendo referencias a ellos desde el motor QML. Esto permite al código C++ leer y escribir propiedades, invocar métodos y conectarse a señales en objetos QML.

Consulte Interacción con objetos QML desde C ++ para obtener más detalles.

Integración con valores JavaScript desde C

El motor QML representa valores de JavaScript mediante QJSValue y clases relacionadas, lo que permite al código C++ trabajar con objetos, funciones y valores primitivos de JavaScript. Esto permite una integración perfecta entre el código C++ y JavaScript.

Consulte Integración con valores JavaScript desde C++ para obtener más detalles.

Incrustación de objetos C++ en QML con propiedades de contexto

Deben evitarse las propiedades de contexto. Consulte Incrustación de objetos C++ en QML con propiedades de contexto para obtener más detalles.

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