Importación de directorios de documentos QML
Se puede importar un directorio local de archivos QML sin ninguna configuración adicional. También se puede importar un directorio remoto de archivos QML, pero es necesario que exista un directorio que enumere el archivo qmldir. Un directorio local puede contener opcionalmente un archivo de listado de directorios qmldir para definir los nombres de tipo que deben proporcionarse a los clientes que importen el directorio y para especificar los recursos JavaScript que deben ponerse a disposición de los importadores.
Importación de directorios locales
Cualquier archivo QML del sistema de archivos local puede importar un directorio local mediante una sentencia import que haga referencia a la ruta absoluta o relativa del sistema de archivos del directorio, lo que permite al archivo utilizar los tipos de objeto definidos en ese directorio.
Si el directorio local contiene un archivo qmldir de listado de directorios, los tipos estarán disponibles con los nombres de tipo especificados en el archivo qmldir; de lo contrario, estarán disponibles con nombres de tipo derivados de los nombres de archivo de los documentos QML. Sólo se expondrán como tipos los nombres de archivo que empiecen por mayúscula y terminen en ".qml" si no se especifica ningún archivo qmldir en el directorio.
Las importaciones de directorios tienen prioridad sobre las importaciones de módulos. Si se define el mismo nombre en un módulo y en un directorio, ambos importados en el mismo espacio de nombres, sólo estará disponible el tipo del módulo.
Un ejemplo
Considere la siguiente estructura de directorios del proyecto QML. Bajo el directorio de nivel superior myapp, hay un conjunto de componentes comunes de interfaz de usuario en un subdirectorio denominado mycomponents, y el código principal de la aplicación en un subdirectorio denominado main, de la siguiente manera:
myapp
|- mycomponents
|- CheckBox.qml
|- DialogBox.qml
|- Slider.qml
|- main
|- application.qmlEl archivo main/application.qml puede importar el directorio mycomponents utilizando la ruta relativa a ese directorio, lo que le permite utilizar los tipos de objeto QML definidos dentro de ese directorio:
El directorio puede importarse en un espacio de nombres local cualificado, en cuyo caso los usos de cualquier tipo proporcionado en el directorio deben ser cualificados:
import "../mycomponents" as MyComponents MyComponents.DialogBox { // ... }
La posibilidad de importar un directorio local es conveniente para casos como los conjuntos de componentes dentro de la aplicación y la creación de prototipos de aplicaciones, aunque cualquier código que importe dichos módulos debe actualizar sus declaraciones import pertinentes si el directorio de módulos se traslada a otra ubicación. Esto puede evitarse si en su lugar se utilizan módulos QML, ya que un módulo instalado se importa con una cadena de identificador único en lugar de una ruta del sistema de archivos.
Importación implícita
El directorio en el que reside un documento QML se importa automáticamente. No es necesario importar explícitamente "." o similares.
Nota: debe asegurarse de que el archivo qmldir que especifica el módulo al que pertenece un documento QML reside en el mismo directorio que el propio documento QML. De lo contrario, la importación implícita es diferente del módulo al que pertenece el documento. Entonces, por ejemplo, otro documento QML puede ser un singleton en el contexto del módulo, pero no un singleton en el contexto de la importación implícita. Esta es una fuente frecuente de errores.
Directorios ubicados remotamente
Un directorio de archivos QML también puede importarse desde una ubicación remota si el directorio contiene un archivo qmldir de listado de directorios.
Nota: esto también es válido para la importación implícita del directorio en el que reside un documento QML. Si los documentos QML se cargan desde una ubicación remota, es necesario añadir archivos qmldir aunque no contengan ninguna declaración explícita de importación de directorios. De lo contrario, los documentos QML no se verán entre sí.
Por ejemplo, si el directorio myapp del ejemplo anterior estuviera alojado en "http://www.my-example-server.com", y el directorio mycomponents contuviera un archivo qmldir definido como sigue:
CheckBox CheckBox.qml DialogBox DialogBox.qml Slider Slider.qml
Entonces, el directorio podría importarse utilizando la URL del directorio remoto mycomponents:
import "http://www.my-example-server.com/myapp/mycomponents" DialogBox { CheckBox { // ... } Slider { // ... } }
Tenga en cuenta que cuando un archivo importa un directorio a través de una red, sólo puede acceder a los archivos QML y JavaScript especificados en el archivo qmldir ubicado en el directorio.
Advertencia: Al importar directorios desde un servidor remoto, los desarrolladores siempre deben tener cuidado de cargar únicamente directorios de fuentes de confianza para evitar cargar código malicioso.
Archivos qmldir de listado de directorios
Un archivo qmldir de listado de directorios es claramente diferente de un archivo qmldir de definición de módulo. Un archivo de listado de directorios qmldir permite compartir rápida y fácilmente un grupo de documentos QML, pero no define un espacio de nombres de tipos en el que se registren los tipos de objetos QML definidos por los documentos, ni admite el control de versiones de dichos tipos de objetos QML.
La sintaxis de un archivo de listado de directorios qmldir es la siguiente:
| Comando | Sintaxis | Descripción |
|---|---|---|
| Declaración de tipo de objeto | <NombreTipo> <NombreArchivo> | Una declaración de tipo de objeto permite exponer un documento QML con la dirección <TypeName>.Ejemplo: RoundedButton RoundedBtn.qml |
| Declaración de tipo de objeto interno | internal <NombreTipo> <NombreArchivo> | Una declaración de tipo de objeto interno permite registrar un documento QML como un tipo que sólo estará disponible para los demás documentos QML contenidos en la importación del directorio. El tipo interno no estará disponible para los clientes que importen el directorio. Ejemplo: internal HighlightedButton HighlightedBtn.qml |
| Declaración de recursos JavaScript | <Identificador> <NombreDeArchivo> | Una declaración de recurso JavaScript permite exponer un archivo JavaScript a través del identificador dado. Ejemplo: MathFunctions mathfuncs.js |
Un directorio del sistema de archivos local puede incluir opcionalmente un archivo qmldir. Esto permite que el motor sólo exponga determinados tipos de QML a los clientes que importen el directorio. Además, los recursos JavaScript del directorio no se exponen a los clientes a menos que se declaren en un archivo qmldir.
© 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.