En esta página

Módulos QML

Un módulo QML proporciona tipos versionados y recursos JavaScript en un espacio de nombres de tipos que pueden utilizar los clientes que importen el módulo. Los tipos que proporciona un módulo pueden definirse en C++ dentro de un plugin o en documentos QML. Los módulos utilizan el sistema de versiones de QML, que permite actualizarlos de forma independiente.

La definición de un módulo QML permite:

  • El uso compartido de tipos QML comunes dentro de un proyecto - por ejemplo, un grupo de componentes de interfaz de usuario que son utilizados por diferentes ventanas.
  • La distribución de bibliotecas basadas en QML
  • La modularización de distintas características, de modo que las aplicaciones sólo carguen las bibliotecas necesarias para sus necesidades individuales.
  • Versionado de tipos y recursos para que el módulo pueda actualizarse de forma segura sin romper el código cliente.

Módulos QML modernos

Los módulos QML se definen mejor utilizando la API de CMake, en particular qt_add_qml_module. Las siguientes secciones describen todos los aspectos de la creación de un módulo QML moderno.

Definición de tipos de objeto mediante documentos QML

Lostipos QML pueden definirse directamente en documentos QML, que es la forma más sencilla de crear componentes reutilizables. Cada archivo QML que comienza con mayúscula define automáticamente un tipo que puede ser utilizado por otros archivos QML del mismo módulo.

Definición de tipos QML desde C++

Para mejorar el rendimiento o acceder a API de bajo nivel, los tipos pueden definirse en C++ y exponerse a QML. Los tipos C++ proporcionan un control total sobre las propiedades, métodos y señales, a la vez que se benefician del tipado estático y la compilación.

Integración con CMake

El comando CMake deqt_add_qml_module reúne archivos QML, tipos C++ y recursos en un módulo cohesionado. Gestiona automáticamente el registro de tipos, la compilación de recursos y la integración de herramientas QML, lo que lo convierte en el método recomendado para el desarrollo de módulos QML modernos.

Modernización de módulos QML

Esta guía ayuda a migrar módulos QML antiguos basados en CMake a versiones más recientes de Qt. Cubre cómo adaptarse a las nuevas políticas de CMake y evitar técnicas obsoletas.

Ajuste fino de los módulos QML

Las opciones avanzadas de configuración de módulos en Escribiendo Módulos Q ML permiten un control detallado sobre el comportamiento de los módulos. Esto incluye la adición de múltiples módulos QML al mismo binario, el versionado, la disposición personalizada de directorios y temas avanzados sobre plugins QML.

Módulos QML antiguos

Nota: Utilice la API CMake para definir un módulo QML. Defina su módulo QML manualmente sólo si necesita utilizar qmake.

Un módulo se define mediante un archivo qmldir de definición de módulo. Cada módulo tiene un espacio de nombres de tipo asociado, que es el identificador del módulo. Un módulo puede proporcionar tipos de objeto QML (definidos mediante documentos QML o a través de un complemento C++) y recursos JavaScript, y puede ser importado por clientes.

Para definir un módulo, el desarrollador debe reunir los distintos documentos QML, recursos JavaScript y plugins C++ que pertenecen al módulo en un único directorio, y escribir un archivo qmldir de definición de módulo adecuado que también debe colocarse en el directorio. A continuación, el directorio puede instalarse en la ruta de importación de QML como módulo.

Tenga en cuenta que la definición de un módulo no es la única forma de compartir tipos QML comunes dentro de un proyecto; también puede utilizarse para este fin una simple importación de directorios de documentos QML.

Tipos de módulos QML admitidos

QML admite dos tipos diferentes de módulos:

Los módulos identificados definen explícitamente su identificador y se instalan en la ruta de importación de QML. Los módulos identificados son más fáciles de mantener (gracias al versionado de tipos) y cuentan con garantías de registro de tipos por parte del motor QML que no se ofrecen a los módulos heredados. Los módulos heredados sólo se admiten para permitir que el código heredado siga funcionando con la última versión de QML, y los clientes deben evitarlos si es posible.

Los clientes pueden importar un módulo QML desde documentos QML o archivos JavaScript. Consulte la documentación sobre la importación de un módulo QML para obtener más información sobre este tema.

Proporcionar tipos y funcionalidad en un plugin de C

Una aplicación que tiene mucha lógica implementada en C++, o que define tipos en C++ y los expone a QML, puede desear implementar un plugin QML. Es posible que un desarrollador de módulos de extensión QML desee implementar algunos tipos en un complemento C++ (en lugar de definirlos mediante documentos QML) para obtener un mejor rendimiento o una mayor flexibilidad.

Todos los plugins de C++ para QML tienen una función de inicialización a la que llama el motor QML cuando carga el plugin. Esta función de inicialización debe registrar cualquier tipo que el plugin proporcione, pero no debe hacer nada más (por ejemplo, instanciar QObjects no está permitido).

Consulte Creación de plugins C++ para QML para obtener más información.

Vea también Modernizar módulos QML y Portar módulos QML a CMake.

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