このページでは

QMLモジュールの最新化

Qt 6 では、Qml モジュールの機能が強化され、使いやすくなりました。以下のセクションでは、すでに `qt_add_qml_module` を使用している Qml モジュールを最新化する方法について説明します。

QMLモジュールをqt_add_qml_module CMakeAPIに移植する方法については、「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)

新しい標準リソースパスプレフィックスの使用

QTP0001のリリースに伴い、QMLモジュールの標準リソースパスが `:/ ` から `:/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 Qml での リソースシステムの使用」も参照してください。

QML ファイルの読み込みには `loadFromModule` を使用してください

デフォルトのインポートパスでは、例えば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変数や、qt_add_qml_moduleの OUTPUT_DIRECTORY 引数も不要になるため、それらの定義と使用箇所を削除してください。

例:

### 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
}

注: CMakeLists.txt 内でqt_add_qml_module を呼び出す前にadd_subdirectory() を呼び出す必要がある場合があります 。そうすることで、DEPENDENCIES TARGET がターゲットを検出できるようになります。

モジュール依存関係の宣言方法の詳細については、「モジュール依存関係の宣言」を参照してください。

「 Qt Qml の変更点」および「QML モジュールの 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.