Qt Qml Compilador
El módulo Qt Qml Compiler contiene la funcionalidad compartida que necesitan las herramientas QML como Qt Quick Compiler y qmllint. También proporciona el framework QQmlSA, que puede utilizarse para ampliar las capacidades de análisis integradas de las herramientas.
Uso del módulo
Para utilizar la API C++ de un módulo Qt es necesario enlazar con la biblioteca del módulo, ya sea directamente o a través de otras dependencias. Varias herramientas de compilación tienen soporte dedicado para esto, incluyendo CMake y qmake.
Construcción con CMake
Utilice el comando find_package() para localizar el componente del módulo necesario en el paquete Qt6:
find_package(Qt6 REQUIRED COMPONENTS QmlCompiler)
target_link_libraries(mytarget PRIVATE Qt6::QmlCompiler)Para obtener más información, consulta la descripción general de la compilación con CMake.
Compilación con qmake
Para configurar el módulo para la construcción con qmake, añada el módulo como valor de la variable QT en el archivo .pro del proyecto:
QT += QmlCompiler
Uso del framework QQmlSA
El módulo compilador Qt Qml ofrece el framework QQmlSA que proporciona herramientas para el análisis estático del código QML. Estas herramientas pueden ayudar a garantizar la validez sintáctica y advertir sobre los antipatrones de QML.
Para añadir el análisis estático a un programa QML se escriben plugins. Éstos ejecutarán una colección de pases de análisis sobre los elementos y propiedades del código QML. Los pases se pueden registrar con un PassManager que almacena los pases y puede ser llamado para analizar un elemento y sus hijos. Un pase es una comprobación de una determinada regla o condición evaluada sobre elementos o propiedades. Si la condición se cumple, el pase puede advertir al usuario de un problema identificado en el código e incluso sugerir una solución. Se denomina pase porque el análisis que se realiza sobre los elementos y propiedades se lleva a cabo ejecutando una colección de pases sobre ellos en sucesión. Cada pase debe ser responsable de identificar un problema específico solamente. Combinando un conjunto de pases se pueden realizar análisis más complejos y, juntos, formar un plugin. Los pases de elementos se definen mediante dos componentes principales, a saber, shouldRun() y run(). Al realizar el análisis, el gestor de pases ejecutará el pase sobre cada elemento que encuentre mientras recorre los hijos del elemento raíz. Para cada elemento, si shouldRun() evaluado en ese elemento devuelve true entonces run() se ejecuta en él.
Los pases sobre propiedades se activan en tres eventos diferentes, a saber, cuando la propiedad se vincula, cuando se lee y cuando se escribe en ella. Estos eventos pueden implementarse sobrescribiendo las funciones onBinding(), onRead() y onWrite() respectivamente.
A medida que el código crece, también lo hace el número de elementos y propiedades. Realizar los pases de análisis estático en todos ellos puede llegar a ser costoso. Por eso es bueno ser granular a la hora de decidir qué elementos y propiedades analizar. Para los elementos, shouldRun() pretende ser una comprobación barata para determinar si debe ejecutarse run(), que realiza el cálculo real. Para las propiedades, la selección se realiza al registrar los pases con el gestor. La función registerPropertyPass() toma las cadenas moduleName, typeName y propertyName como argumentos. Éstas se utilizan para filtrar el conjunto de propiedades afectadas por el pase registrado.
Ejemplos
El Tutorial de Análisis Estático QML muestra cómo utilizar el framework QQmlSA para crear un pase qmllint personalizado.
Referencia
- Qt Qml Compiler C++ Classes - la API de C++ proporcionada por el módulo QmlCompiler
- Herramientas QML que utilizan las funciones de análisis estático
Licencias
Qt Qml El compilador está disponible bajo licencias comerciales de The Qt Company. Además, está disponible bajo la Licencia Pública General GNU, versión 3 con Qt GPL excepción 1.0. Consulte Licencias de Qt para 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.