QMLモジュールとプラグインの併用
C++で定義されたコンポーネントをQt Quick アプリケーションに公開するために、QMLモジュールは C++プラグインを使うことができます。
QMLモジュールを作成するには
- カスタムコンポーネントを作成し、すべての
.qmlファイルをモジュール専用のディレクトリに配置します。例えば、imports\asset_imports。 - Qt Quick UI Prototype プロジェクト (
.qmlproject) の場合、モジュールを使用したいアプリケーションの.qmlprojectファイルに、モジュールのあるディレクトリへのパスをimportPaths変数の値として指定します。例えば、importPaths: [ "imports", "asset_imports" ]。 - モジュール用の
qmldirファイルを作成し、モジュール・ディレクトリに置きます。詳細については、モジュール定義qmldirファイルを参照してください。 - モジュール・ディレクトリに
designerという名前のディレクトリを作成します。 .metainfoファイルを作成し、designerディレクトリに置きます。例として、qtquickcontrols2.metainfoのような Qt に付属する metainfo ファイルを使用します。- QML モジュールのインポート で説明したように、モジュールをプロジェクトにインポートしてください。
注: Qt Creator で新しい QML モジュールが見つからない場合は、プロジェクトをビルドし、Tools >QML/JS >Reset Code Model でコードモデルをリセットしてください。
Qt 6.1 以前での開発
Qt 6.2 以降では、CMake はqmltypes とqmldir ファイルを自動的に生成します。
型記述ファイルの生成
QMLの型を登録する際には、QMLモジュールにplugins.qmltypes 。このファイルはqmldir ファイルと同じディレクトリにあるのが理想的です。qmltypes ファイルには、モジュールのプラグインによってエクスポートされるコンポーネントの説明が記述されており、モジュールのインポート時にQt Creator によって読み込まれます。
詳細については、型記述ファイルを参照してください。
プラグインを自動的にダンプする
プラグインを持つモジュールにqmltypes ファイルがない場合、Qt Creator はqmldump プログラムをバックグラウンドで実行することで、一時ファイルを生成しようとします。しかし、この自動ダンプは失敗の可能性が高いフォールバックメカニズムであり、これに頼ることはできません。
QMLモジュールのインポート
デフォルトでは、Qt Creator は Qt の QML インポートパスから QML モジュールを探します。
qmake を使用し、Qt Creator が使用すべきインポートパスを追加する場合は、QML_IMPORT_PATH を使用して、アプリケーションの.pro ファイルにQML_IMPORT_PATH += path/to/module を追加してください。
CMake を使用する場合は、CMakeLists.txt ファイルに以下のコマンドを追加して QML のインポートパスを設定してください:
set(QML_IMPORT_PATH ${CMAKE_SOURCE_DIR}/qml ${CMAKE_BINARY_DIR}/imports CACHE STRING "" FORCE)インポートパスは、CMakeプロジェクトがビルドするすべてのターゲットに影響します。
コードモデルのリセットも参照してください 。
Copyright © The Qt Company Ltd. and other contributors. 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.