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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。