Modernisation des modules QML
Les modules Qml sont désormais plus puissants et plus faciles à utiliser dans Qt 6. Les sections suivantes décrivent comment moderniser les modules Qml qui utilisent déjà qt_add_qml_module.
Voir également « Portage des modules QML vers CMake » pour savoir comment porter un module QML vers l’API CMake ` qt_add_qml_module `.
Utilisez qt_standard_project_setup
qt_standard_project_setup configure, entre autres, les politiques CMake de Qt nécessaires aux modules QML modernes. Pour moderniser votre module QML et respecter les meilleures pratiques, appelez qt_standard_project_setup dans le fichier CMakeLists.txt de niveau supérieur du projet avant tout appel à qt_add_qml_module:
qt_standard_project_setup(REQUIRES 6.8)Utilisez le nouveau préfixe standard du chemin d’accès aux ressources
Avec la version QTP0001, le chemin d’accès standard aux ressources pour les modules QML est passé de :/ à :/qt/qml. N’utilisez pas de préfixes de ressources personnalisés et ne prolongez pas les chemins d’importation dans le moteur. Supprimez tous les arguments RESOURCE_PREFIX de tous les appels à qt_add_qml_module, ainsi que tous les appels à QQmlEngine::addImportPath ou similaires. Modifiez tous les chemins d'accès aux fichiers qrc dans votre code C++ et QML afin d'utiliser le nouveau préfixe de chemin d'accès aux ressources :
// C++ usages like:
QUrl someUrl("qrc:/MyQmlModule/MyResource1.png");
// need to be changed to
QUrl someUrl("qrc:/qt/qml/MyQmlModule/MyResource1.png");
// QML usages like:
":/MyQmlModule/MyResource1.png"
// need to be changed to
":/qt/qml/MyQmlModule/MyResource1.png"Voir également Utilisation du système de ressources Qt avec QML.
Utilisez `loadFromModule` pour charger vos fichiers QML
Avec le chemin d’importation par défaut, vous pouvez utiliser les méthodes loadFromModule, telles que QQmlApplicationEngine::loadFromModule, QQuickView::loadFromModule ou QQmlComponent::loadFromModule, par exemple.
Utilisez ` loadFromModule ` pour charger votre fichier QML, par exemple :
engine.load(QUrl(QStringLiteral("qrc:/MyQmlModule/Main.qml")));
// becomes
engine.loadFromModule("MyQmlModule", "Main");Remplacez OUTPUT_DIRECTORY et IMPORT_PATH par DEPENDENCIES TARGET
Évitez de définir un « IMPORT_PATH » dans ` qt_add_qml_module`. Utilisez plutôt ` DEPENDENCIES TARGET ` pour déclarer les dépendances vis-à-vis d’autres modules QML qui ne se trouvent pas dans le chemin d’importation actuel.
L’utilisation de ` DEPENDENCIES TARGET ` élimine également le besoin de la variable CMake ` QT_QML_OUTPUT_DIRECTORY ` et de l’argument ` OUTPUT_DIRECTORY ` de ` qt_add_qml_module` ; supprimez donc leurs définitions et leurs utilisations.
Par exemple :
### in the CMakeLists.txt file defining the dependent QML module:
# don't set QT_QML_OUTPUT_DIRECTORY and remove lines like these:
set(QT_QML_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/qml)
qt_add_qml_module(MyThirdPartyQmlLibraryDependency
URI MyThirdPartyQmlLibraryDependency
....
# custom output paths are obsolete due to DEPENDENCIES TARGET below, so remove:
OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/qml
}
### in the CMakeLists.txt file defining the QML module that uses the dependency:
qt_add_qml_module(MyQmlLibrary
URI MyQmlModule
...
# replace import paths like these:
IMPORT_PATH ${CMAKE_CURRENT_BINARY_DIR}/thirdparty/qml
# with:
DEPENDENCIES TARGET MyThirdPartyQmlLibraryDependency
}Remarque : vous devrez peut-être appeler ` add_subdirectory() ` avant d’appeler ` qt_add_qml_module ` dans votre fichier `CMakeLists.txt` pour que ` DEPENDENCIES TARGET ` puisse trouver la cible.
Pour plus d’informations sur la manière de déclarer les dépendances des modules, consultez la section Déclaration des dépendances des modules.
Voir également Modifications apportées à Qt Qml et Portage des modules QML vers CMake.
© 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.