Qt Quickが提供するC++拡張ポイント

すべてのQMLアプリケーションは、C++コードに実装された追加機能を利用したり、 C++ベースのQMLプラグインを提供するために、C++から拡張することができます。C++からQMLを拡張する方法については、Writing QML Extensions with C++のドキュメントを参照してください。

さらに、Qt Quick モジュールでは、C++ 開発者向けに、このモジュールに特化したいくつかの拡張ポイントや統合ポイントを提供しています。特に、C++の開発者は、Qt QuickでレンダリングできるQQuickItem のカスタム型を作成し、登録することができます。また、独自のレンダリングプリミティブを定義できるシーングラフ関連のクラスもいくつか提供されています。

ユーザー定義 QQuickItem 派生型

Qt Quick モジュールには、QML アプリケーションで使用するための豊富なビジュアルアイテム型ライブラリが用意されていますが、開発者の中には、独自のアイテム派生型を C++ で定義し、QML の型システムに公開したいと考える人もいるでしょう。最も簡単な方法は、QQuickItem をサブクラス化することです。 は Qt Quick モジュールに含まれるすべてのビジュアル型の基本型です。詳しくはQQuickItem のドキュメントを参照してください。

Qt Quick 2 では、OpenGL ES、OpenGL、Vulkan、Metal、Direct 3D などのグラフィックス API に基づいた専用のシーングラフをレンダリングに使用します。従来の命令型ペイントシステム(QPainter など)ではなく、シーングラフをグラフィックスに使用することは、レンダリングするシーンをフレーム間で保持することができ、レンダリングを開始する前にレンダリングするプリミティブの完全なセットを知ることができることを意味します。これにより、OpenGLの描画呼び出しをバッチ化して状態の変化を最小限にしたり、不明瞭なプリミティブを破棄したりするなど、さまざまな最適化が可能になります。Qt Quick C++ API では、C++ でカスタムノードを作成できるように、さまざまなクラスを提供しています。詳細はQt Quick Scene Graphドキュメントを参照してください。

ピクセルマップとスレッド画像のサポート

QMLエンジンでは、ファイルシステムやネットワークリソースから画像を読み込むことができますが、アプリケーションによっては、C++ベースのプロセスから画像を読み込むという追加オプションが必要になる場合があります。このような場合、QQuickImageProvider クラスを使って実装することができます。このクラスは、QML アプリケーションに対して pixmap の読み込みとスレッド画像リクエストのサポートを提供します。特殊な "image: "URLスキームを使って画像を要求したQMLアプリケーションは、 画像を読み込むために適切な画像プロバイダに誘導されます。

詳しくはQQuickImageProvider のドキュメントを参照してください。

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