QMLモジュール

QMLモジュールは、バージョン管理された型やJavaScriptのリソースを型名前空間に提供し、 モジュールをインポートしたクライアントが使用することができます。モジュールが提供する型は、プラグイン内のC++で定義することもできますし、QML文書で定義することもできます。モジュールはQMLのバージョン管理システムを利用することで、モジュールの独立した更新を可能にします。

QMLモジュールを定義することにより、以下のことが可能になります:

  • 例えば、異なるウィンドウで使用されるUIコンポーネントのグループなどです。
  • QMLベースのライブラリの配布
  • 個別の機能をモジュール化することで、アプリケーションはそれぞれの必要性に応じて必要なライブラリのみをロードすることができます。
  • 型やリソースのバージョン管理により、クライアントコードを壊すことなく、 モジュールを安全に更新することができます。

QMLモジュールの定義

モジュールはモジュール定義qmldirファイルによって定義されます。各モジュールには関連する型名前空間があり、これがモジュールの識別子となります。モジュールはQMLのオブジェクト型(QMLドキュメントまたはC++プラグインで定義)やJavaScriptのリソースを提供し、クライアントからインポートすることができます。

モジュールを定義するためには、開発者はモジュールに含まれる様々なQML文書、JavaScriptリソース、C++プラグインを1つのディレクトリに集め、適切なモジュール定義qmldirファイルを記述し、そのディレクトリに置く必要があります。そして、そのディレクトリをモジュールとしてQMLのインポートパスにインス トールします。

モジュールを定義することだけが、プロジェクト内で共通のQML型を共有する 唯一の方法ではないことに注意してください。

QMLモジュールの種類

QMLがサポートするモジュールは2種類あります:

識別モジュールは、その識別子を明示的に定義し、QMLのインポートパスに インストールされます。識別モジュールは(型がバージョン管理されるため)より保守性が高く、 QMLエンジンによる型登録保証が提供されますが、レガシーモジュールには提供されません。レガシーモジュールは、レガシーコードを最新バージョンのQMLで動作させるためにのみサポートされるものであり、クライアントは可能な限り避けるべきです。

クライアントはQML文書やJavaScriptファイルからQMLモジュールをインポートすることができます。QMLモジュールのインポートについてはQMLモジュールのインポートに関するドキュメントを参照してください。

C++プラグインでの型と機能の提供

C++で多くのロジックを実装しているアプリケーションや、C++で型を定義し、 それをQMLに公開しているアプリケーションでは、QMLプラグインを実装したいと思うかもしれません。QML拡張モジュールの開発者は、よりよいパフォーマンスや柔軟性を得るために、(QMLドキュメントで型を定義するのではなく)C++プラグインで型を実装したいと考えるかもしれません。

QMLのC++プラグインには必ず初期化関数があり、プラグインのロード時にQMLエンジンから呼び出されます。この初期化関数は、プラグインが提供するすべての型を登録しなければなりませんが、それ以外のことは行ってはいけません(例えば、QObjectのインスタンス化は禁止されています)。

詳しくはC++ プラグインの作成を参照してください。

© 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.