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.
Dies ist die vollständige Projektdatei:
cmake_minimum_required(VERSION 3.16) project(hello VERSION 1.0 LANGUAGES CXX) find_package(Qt6 6.2 COMPONENTS Quick Gui REQUIRED) qt_standard_project_setup(REQUIRES 6.5) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) qt_add_executable(myapp main.cpp ) qt_add_qml_module(myapp URI hello QML_FILES main.qml FramedImage.qml RESOURCES img/world.png ) target_link_libraries(myapp PRIVATE Qt6::Gui Qt6::Quick)
Gehen wir die Änderungen durch, die wir vorgenommen haben. Im Aufruf von find_package
ersetzen wir Core
durch Quick
. Dadurch wird das Modul Qt6Quick
lokalisiert und die Ziele Qt6::Quick
bereitgestellt, mit denen wir später verlinken.
find_package(Qt6 6.2 COMPONENTS Quick Gui REQUIRED)
Wir rufen qt_standard_project_setup auf, und geben CMAKE_CXX_STANDARD und CMAKE_CXX_STANDARD_REQUIRED
an. Indem wir REQUIRES 6.5
an qt_standard_project_setup
übergeben, entscheiden wir uns für nützliche Voreinstellungen für qt_add_qml_module. Es aktiviert alle Qt CMake Richtlinien bis Version 6.5, insbesondere QTP0001, das ein vernünftiges Standard-Ressourcen-Präfix für QML-Module definiert.
qt_standard_project_setup(REQUIRES 6.5) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON)
Beachten Sie, dass die Anwendung immer noch gegen Qt6::Core
linken wird, da Qt6::Quick
davon abhängt.
qt_add_executable erstellt und finalisiert ein Anwendungsziel:
qt_add_executable(myapp main.cpp )
qt_add_qml_module übergibt das Ziel der ausführbaren Datei, eine URI, die Modulversion und eine Liste von QML-Dateien, um sicherzustellen, dass myapp ein QML-Modul wird. Dadurch werden die QML-Dateien in qrc:/qt/qml/${URI}
im Ressourcendateisystem abgelegt. Außerdem sorgt qt_add_qml_module
dafür, dass qmlcachegen
ausgeführt wird. Außerdem wird ein myapp_qmllint
Ziel erstellt, das qmllint
auf den Dateien in QML_FILES ausführt.
qt_add_qml_module(myapp URI hello QML_FILES main.qml FramedImage.qml RESOURCES img/world.png )
Durch das Hinzufügen der referenzierten Ressourcen werden diese automatisch der Anwendung unter demselben Wurzelpfad wie die QML-Dateien hinzugefügt - ebenfalls im Ressourcendateisystem. Indem wir den Pfad im Ressourcensystem mit dem im Quell- und Bauverzeichnis konsistent halten, stellen wir sicher, dass das Bild immer gefunden wird, da es relativ zu FramedImage.qml aufgelöst wird. Er verweist auf das Bild im Ressourcendateisystem, wenn wir main.qml von dort laden, oder auf das Bild im eigentlichen Dateisystem, wenn wir es mit dem Tool qml
überprüfen.
Im Befehl target_link_libraries
verlinken wir gegen Qt6::Quick
anstelle von Qt6::Core
.
target_link_libraries(myapp PRIVATE Qt6::Gui Qt6::Quick)
© 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.