En esta página

Tipos de objeto QML

Un tipo de objeto QML es un tipo a partir del cual se puede instanciar un objeto QML.

En términos sintácticos, un tipo de objeto QML es aquel que puede utilizarse para declarar un objeto especificando el nombre del tipo seguido de un conjunto de llaves que engloban los atributos de dicho objeto. Esto difiere de los tipos de valor, que no pueden utilizarse del mismo modo. Por ejemplo, Rectangle es un tipo de objeto QML: puede utilizarse para crear objetos de tipo Rectangle. Esto no puede hacerse con tipos primitivos como int y bool, que se utilizan para contener tipos de datos simples en lugar de objetos.

Los tipos de objeto QML personalizados pueden definirse creando un archivo .qml que defina el tipo, como se explica en Documentos como definiciones de tipo de objeto QML, o definiendo un tipo QML desde C++ y registrando el tipo en el motor QML, como se explica en Definición de tipos QML desde C++. Tenga en cuenta que, en ambos casos, el nombre del tipo debe empezar por mayúscula para poder declararlo como tipo de objeto QML en un archivo QML.

Para obtener más información sobre C++ y los distintos métodos de integración de QML, consulte la página de descripción general de la integración de C++ y QML.

Hay dos tipos de objeto incorporados que pueden utilizarse sin importar ningún otro módulo: QtObject es el tipo base de todos los tipos de objeto. Component puede utilizarse para definir nuevos tipos de objeto en línea en documentos QML.

Definición de tipos de objeto desde QML

Definición de tipos de objeto a través de documentos QML

Los escritores de plugins y desarrolladores de aplicaciones pueden proporcionar tipos definidos como documentos QML. Un documento QML, cuando es visible para el sistema de importación QML, define un tipo identificado por el nombre del archivo menos las extensiones de archivo.

Así, si existe un documento QML llamado "MyButton.qml", proporciona la definición del tipo "MyButton", que puede utilizarse en una aplicación QML.

Consulte la documentación sobre documentos QML para obtener información sobre cómo definir un documento QML y la sintaxis del lenguaje QML. Una vez familiarizado con el lenguaje QML y con cómo definir documentos QML, consulte la documentación que explica cómo definir y utilizar sus propios tipos QML reutilizables en documentos QML.

Consulte Definición de tipos de objeto mediante documentos QML para obtener más información.

Definición de tipos anónimos con componentes

Otro método para crear tipos de objeto desde dentro de QML es utilizar el tipo Component. Esto permite definir un tipo en línea dentro de un documento QML, en lugar de utilizar un documento independiente en un archivo .qml.

Item {
    id: root
    width: 500; height: 500

    Component {
        id: myComponent
        Rectangle { width: 100; height: 100; color: "red" }
    }

    Component.onCompleted: {
        myComponent.createObject(root)
        myComponent.createObject(root, {"x": 200})
    }
}

Aquí el objeto myComponent define esencialmente un tipo anónimo que puede instanciarse utilizando Component::createObject para crear objetos de este tipo anónimo.

Los componentes en línea comparten todas las características de los componentes normales de nivel superior y utilizan la misma lista import que el documento QML que los contiene.

Tenga en cuenta que cada declaración de objeto Component crea su propio ámbito de componente. Todos los valores de id que se utilicen y a los que se haga referencia dentro de una declaración de objeto Component deben ser únicos dentro de ese ámbito, pero no es necesario que sean únicos dentro del documento en el que se declara el componente en línea. Así, el Rectangle declarado en la declaración de objeto myComponent podría tener un id de root sin entrar en conflicto con el root declarado para el objeto Item en el mismo documento, ya que estos dos valores id se declaran dentro de ámbitos de componentes diferentes.

Ver Ámbito y Resolución de Nombres para más detalles.

Definición de tipos de objeto desde C

Los escritores de plugins C++ y los desarrolladores de aplicaciones pueden registrar tipos definidos en C++ a través de la API proporcionada por el módulo Qt Qml. Existen varias funciones de registro que permiten diferentes casos de uso. Para obtener más información sobre estas funciones de registro y los detalles específicos de la exposición de tipos C++ personalizados a QML, consulte la documentación relativa a la definición de tipos QML desde C++.

El sistema de tipos de QML se basa en importaciones, plugins y extensiones que se instalan en una ruta de importación conocida. Los plugins pueden ser proporcionados por desarrolladores externos y reutilizados por desarrolladores de aplicaciones cliente. Consulte la documentación sobre módulos QML para obtener más información sobre cómo crear y desplegar un módulo de extensión 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.