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++ プラグインの作成を参照してください。

©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。