最新の QML モジュール
Qt 6 で QML モジュールはより強力に、より使いやすくなりました。以下の章では、すでにqt_add_qml_module を使っている QML モジュールをモダナイズする方法を説明します。
QML モジュールをqt_add_qml_moduleCMake API に移植する方法については、QML モジュールを CMake に移植するも参照してください。
qt_standard_project_setup を使う
qt_standard_project_setupは、特に最新の QML モジュールに必要なQt CMake ポリシーを設定します。QML モジュールを最新化し、ベストプラクティスに従うには、qt _ add_qml_module を呼び出す前に、プロジェクトのトップレベルCMakeLists.txt
ファイルでqt_standard_project_setup を呼び出してください:
qt_standard_project_setup(REQUIRES 6.8)
新しい標準リソースパスのプレフィックスを使う
QML モジュールの標準リソースパスはQTP0001 で:/
から:/qt/qml
に移動しました。カスタムリソースプレフィックスを使用したり、エンジン内でインポートパスを拡張したりしないでください。すべてのqt_add_qml_module呼び出しからRESOURCE_PREFIX
引数をすべて削除し、QQmlEngine::addImportPath などへの呼び出しもすべて削除してください。C++ および QML コード内のすべての qrc パスを、新しいリソースパス接頭辞を使用するように変更してください:
// 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"
Qt Resource System を QML で使う」も参照してください。
loadFromModuleを使ってQMLファイルを読み込む
デフォルトのインポートパスでは、QQmlApplicationEngine::loadFromModule 、QQuickView::loadFromModule 、QQmlComponent::loadFromModule のように、loadFromModule
のメソッドを使用することができます。
例えば、loadFromModule
を使ってQMLファイルをロードします:
engine.load(QUrl(QStringLiteral("qrc:/MyQmlModule/Main.qml"))); // becomes engine.loadFromModule("MyQmlModule", "Main");
OUTPUT_DIRECTORY と IMPORT_PATH を DEPENDENCIES TARGET に置き換えてください。
qt_add_qml_moduleで IMPORT_PATH
。その代わりに、DEPENDENCIES TARGET
を使って、現在のインポートパスでは見つからない他のQMLモジュールへの依存を宣言します。
また、DEPENDENCIES TARGET
を使うことで、QT_QML_OUTPUT_DIRECTORY
という CMake 変数と、OUTPUT_DIRECTORY
というqt_add_qml_module への引数が不要になります。
例えば
### 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 }
注意: DEPENDENCIES TARGET
がターゲットを見つけるために、CMakeLists.txt でqt_add_qml_module を呼び出す前にadd_subdirectory()
を呼び出す必要があるかもしれません。
モジュールの依存関係を宣言する方法の詳細については、モジュールの依存関係の宣言 を参照してください。
Qt QML の変更点とCMake への QML モジュールの移植も参照してください 。
© 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.