このページでは

プラグインを使用したQMLモジュールの利用

QMLモジュールではC++プラグインを使用して、C++で定義されたコンポーネントをQt Quick アプリケーションに公開することができます。

QMLモジュールを作成するには:

  1. カスタムコンポーネントを作成し、すべての.qml ファイルをそのモジュール専用のディレクトリに配置します。例:imports\asset_imports
  2. Qt Quick UI Prototype プロジェクト (.qmlproject) の場合、モジュールを使用したいアプリケーションの `.qmlproject ` ファイル内で、importPaths 変数の値として、モジュールが格納されているディレクトリへのパスを指定します。例:importPaths: [ "imports", "asset_imports" ]
  3. モジュール用のqmldir ファイルを作成し、モジュールディレクトリに配置します。詳細については、「モジュール定義のqmldirファイル」を参照してください。
  4. モジュールディレクトリ内に「designer 」という名前のディレクトリを作成します。
  5. モジュール用の `.metainfo ` ファイルを作成し、designer ディレクトリに配置します。例として、qtquickcontrols2.metainfo など、Qt XMLに同梱されているメタインフォファイルを使用してください。
  6. 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 で使用する追加のインポートパスを追加している場合は、アプリケーションの.pro ファイル内でQML_IMPORT_PATH を使用してそれらを指定してください: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プロジェクトによってビルドされるすべてのターゲットに影響します。

デザインモードでの QML モジュールの実行

QML Puppetは、Design モードで画像のレンダリングやプレビュー、データの収集に使用されます。QMLモジュールからカスタムコンポーネントを正しくレンダリングするには、QML PuppetをQMLモジュールと同じQtバージョンおよびコンパイラでビルドする必要があります。

プラグインは、QML Puppetによって実行されているか、アプリケーションによって実行されているかによって、動作が異なる必要があります。たとえば、Design モードではアニメーションを実行すべきではありません。QML_PUPPET_MODE 環境変数の値を使用することで、プラグインが現在アプリケーションによって実行されているのか、それともDesign モードで編集されているのかを確認できます。

コードモデルのリセットも参照してください

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.