Construyendo una aplicación QML

En Construir una aplicación de consola C++, mostramos el archivo CMakeLists.txt para una aplicación de consola simple. Ahora crearemos una aplicación QML que utilice el módulo Qt Quick módulo.

Aquí está el archivo de proyecto completo:

cmake_minimum_required(VERSION 3.16)

project(helloworld VERSION 1.0.0 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(Qt6 6.5 COMPONENTS Quick REQUIRED)

qt_standard_project_setup(REQUIRES 6.5)

qt_add_executable(helloworld
    main.cpp
)

qt_add_qml_module(helloworld
    URI hello
    QML_FILES
        main.qml
        FramedImage.qml
    RESOURCES
        img/world.png
)

target_link_libraries(helloworld PRIVATE Qt6::Quick)

Repasemos los cambios que hemos realizado, en comparación con la aplicación de consola CMakeLists.txt:

    ...
find_package(Qt6 6.5 COMPONENTS Quick REQUIRED)

En la llamada a find_package(), sustituimos Core por Quick. Por lo tanto, CMake cargará el módulo Qt6Quick y proporcionará los objetivos Qt6::Quick con los que posteriormente enlazaremos. CMake también cargará automáticamente los paquetes de los que depende Quick, como Qt6Qml, que define el comando qt_add_qml_module() que usamos a continuación.

También necesitamos Qt 6.5 o posterior.

qt_standard_project_setup(REQUIRES 6.5)

El comando qt_standard_project_setup() establece los valores por defecto de todo el proyecto para una aplicación Qt típica. Añadiendo REQUIRES 6.5, habilitamos la política QTP0001, que define un prefijo de recurso por defecto para los módulos QML creados por qt_add_qml_module().

    ...
qt_add_qml_module(helloworld
    URI hello
    QML_FILES
        main.qml
        FramedImage.qml
    RESOURCES
        img/world.png
)

qt_add_qml_module() añade un módulo QML llamado hello al ejecutable, que consta de dos archivos QML y una imagen. Debido a QTP0001, el módulo estará disponible en qrc:/qt/qml/hello en el sistema de archivos de recursos, siendo qrc:/qt/qml/ una de las rutas de importación por defecto del motor QML.

qt_add_qml_module() también realiza pasos de optimización como ejecutar el compilador de scripts QML, y definir un objetivo helloworld_qmllint que puede ejecutar para obtener sugerencias adicionales sobre los archivos .qml desde qmllint.

target_link_libraries(helloworld PRIVATE Qt6::Quick)

En el comando target_link_libraries(), enlazamos nuestro ejecutable contra Qt6::Quick. Esto automáticamente enlaza con los objetivos de los que depende Qt6::Quick, incluyendo Qt6::Qml y Qt6::Core.

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