Creación de prototipos con la herramienta QML Runtime

La utilidad qml está pensada principalmente para probar sus aplicaciones y componentes QML. Para lanzar una aplicación QML en un entorno de producción, a menudo es necesario desarrollar una aplicación C++ personalizada o agrupar el archivo QML en un módulo. Consulte Despliegue de aplicaciones QML para obtener más información.

qml puede instanciar cualquier tipo QML que proporcione, tal cual, aunque no haya nada que mostrar. Para mostrar contenido QML con el objeto raíz distinto de Window, qml envuelve este contenido en un Window.

Por lo tanto, al pasar de un prototipo desarrollado con qml a una aplicación C++, deberá asegurarse de que el elemento raíz es un Window, o crear un QQuickView en C++ para contener el Item raíz. Pero mientras tanto, puedes cargar y probar partes de tu prototipo por separado con la herramienta qml.

Para cargar un archivo .qml, indique la ruta del archivo en la línea de comandos:

$ qml myqmlfile.qml

Para ver las opciones de configuración, ejecute qml con el argumento --help.

Cuando el objeto raíz del archivo QML que se está cargando es un Elemento en lugar de una Ventana, es necesario envolverlo en un Window para que se muestre. Mientras este trabajo está pendiente, el objeto de nivel superior que ya está cargado se representa mediante un objeto PartialScene. A continuación, la herramienta qml carga archivos QML adicionales para decidir qué hacer a continuación: uno es un archivo de configuración que especifica en qué tipo de contenedor envolver el PartialScene. La propiedad PartialScene.container proporciona una URL que apunta al código fuente QML para el componente contenedor, que normalmente debería declarar un Window en el que envolver el Item que se cargó en primer lugar. Así, el proceso de envolver un elemento en una ventana es programable; y por defecto, estos dos archivos QML adicionales se cargan desde los recursos dentro del ejecutable qml. Puedes listar las configuraciones disponibles con el comando --list-conf:

$ qml --list-conf
Built-in configurations:
  default
  resizeToItem

La configuración default proporciona el comportamiento predeterminado: el elemento raíz se redimensionará para llenar la ventana envolvente al inicio y también cuando el usuario redimensione la ventana. La configuración alternativa resizeToItem funciona a la inversa: el elemento puede establecer su propio tamaño mediante programación (por ejemplo, creando vínculos a sus propias propiedades width y height ), y la ventana envolvente se redimensionará para ajustarse (sujeto a los límites que pueda imponer el sistema de ventanas). Puede elegir cualquiera de estas opciones mediante -c o --config:

$ qml -c resizeToItem selfResizingItem.qml

Se pueden añadir configuraciones adicionales creando directorios de configuración en QStandardPaths::AppConfigLocation, cada uno con dos archivos QML en su interior: un archivo de configuración llamado configuration.qml, y un archivo QML que declara la envoltura del elemento, que puede tener cualquier nombre. Si se ha hecho esto, el comando qml --list-conf también listará esas configuraciones adicionales, mientras que la opción --verbose las expandirá para dar las rutas completas a esas configuraciones, y las ubicaciones adicionales que se buscaron:

$ qml --list-conf --verbose
Built-in configurations:
  default
  resizeToItem
Other configurations:
  /home/myuser/.config/QtProject/Qml Runtime/simplest
Checked in:
  /home/myuser/.config/QtProject/Qml Runtime
  /etc/xdg/QtProject/Qml Runtime

He aquí un ejemplo de archivo configuration.qml:

import QmlRuntime.Config

Configuration {
    PartialScene {
        itemType: "QQuickItem"
        container: Qt.resolvedUrl("ItemWrapper.qml")
    }
}

Y aquí está el posible ItemWrapper.qml más simple al que podría apuntar la propiedad container:

import QtQuick

Window {
    required property Item containedObject: null
    onContainedObjectChanged: {
        if (containedObject == undefined || containedObject == null) {
            visible = false;
        } else {
            containedObject.parent = contentItem;
            visible = true;
        }
    }
}

Cuando se hayan creado estos archivos, se puede utilizar la opción qml -c dando el nombre del directorio que contiene el archivo configuration.qml, que especifica la ruta al objeto contenedor:

$ qml -c simplest mycomponent.qml

El tiempo de ejecución de qml establecerá directamente la propiedad containedObject, que debe tener ese nombre; y cuando se establezca, Item se reparentará a Window y se mostrará. Dado que esta ventana está declarada en QML, cuando escribas tu propia ventana envolvente, eres libre de añadir cualquier característica adicional que desees: para manejar el redimensionamiento de forma personalizada, o para añadir capacidades que puedas encontrar útiles durante la creación de prototipos.

Independientemente de lo que se encuentre en AppConfigLocation, puede utilizar alternativamente la opción qml -c dando la ruta completa al archivo configuration.qml, y éste a su vez puede especificar la ruta completa al objeto contenedor; de modo que estos archivos pueden estar ubicados en cualquier lugar.

Además de las características que se pueden declarar en los archivos de configuración, la herramienta qml también proporciona algunas características más a través de opciones de línea de comandos. Utilice la opción --help para obtener una lista actualizada.

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