Erstellen einer QML-Anwendung

In Erstellen einer C++-Konsolenanwendung haben wir die Datei CMakeLists.txt für eine einfache Konsolenanwendung gezeigt. Wir werden nun eine QML-Anwendung erstellen, die das Qt Quick Modul verwendet.

Hier ist die vollständige Projektdatei:

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)

Gehen wir nun die Änderungen durch, die wir im Vergleich zur Konsolenanwendung CMakeLists.txt vorgenommen haben:

    ...
find_package(Qt6 6.5 COMPONENTS Quick REQUIRED)

Im Aufruf von find_package() ersetzen wir Core durch Quick. CMake wird daher das Modul Qt6Quick laden und die Ziele Qt6::Quick bereitstellen, gegen die wir später linken. CMake lädt auch automatisch Pakete, von denen Quick abhängt, wie Qt6Qml, das den Befehl qt_add_qml_module() definiert, den wir weiter unten verwenden.

Wir benötigen außerdem Qt 6.5 oder neuer.

qt_standard_project_setup(REQUIRES 6.5)

Der Befehl qt_standard_project_setup() setzt projektweite Standardeinstellungen für eine typische Qt-Anwendung. Durch Hinzufügen von REQUIRES 6.5 aktivieren wir die Richtlinie QTP0001, die ein Standard-Ressourcen-Präfix für QML-Module definiert, die mit qt_add_qml_module() erstellt wurden.

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

qt_add_qml_module() fügt der ausführbaren Datei ein QML-Modul namens hello hinzu, das aus zwei QML-Dateien und einem Bild besteht. Aufgrund von QTP0001 wird das Modul unter qrc:/qt/qml/hello im Ressourcendateisystem verfügbar sein, wobei qrc:/qt/qml/ einer der Standardimportpfade der QML-Engine ist.

qt_add_qml_module() führt auch Optimierungsschritte durch, wie das Ausführen des QML-Skript-Compilers und das Definieren eines helloworld_qmllint -Ziels, das Sie ausführen können, um zusätzliche Vorschläge zu den .qml -Dateien von qmllint zu erhalten.

target_link_libraries(helloworld PRIVATE Qt6::Quick)

Mit dem Befehl target_link_libraries() linken wir unsere ausführbare Datei gegen Qt6::Quick. Dadurch wird automatisch auch gegen Ziele gelinkt, von denen Qt6::Quick abhängt, einschließlich Qt6::Qml und Qt6::Core.

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