Qt プラットフォーム抽象化

Qt Platform Abstraction(QPA)は、Qt の主要なプラットフォーム抽象化レイヤーです。

この API は、QPlatform* というクラス接頭辞で識別することができ、Qt GUI で一般的に見られるより高位のクラスを実装するために使用されます。例えば、QWindow を通じて公開されるウィンドウ・システム統合のためのQPlatformWindow や、QStyleHint やQStyle を通じて公開される、より深いプラットフォームのテーマ化と統合のためのQPlatformTheme などです。

QPA クラスにはソース互換性もバイナリ互換性も保証されていません。つまり、API は開発された Qt バージョンでのみ動作することが保証されています。ただし、API の変更はマイナー リリースでのみ行われます。(5.1 や 5.2 など)。

APIの概要

  • ウィンドウシステムの統合
    • QPlatformIntegration
    • QPlatformアクセシビリティ
    • QPlatformBackingStore
    • QPlatformクリップボード
    • Qプラットフォーム・カーソル
    • QPlatformDrag
    • QPlatformFontDatabase
    • QPlatformGraphicsBuffer
    • QPlatformInputContext(プラットフォーム入力コンテキスト
    • QPlatformOffscreenSurface(オフスクリーンサーフェス
    • QPlatformOpenGLContext(プラットフォームオープンGLContext
    • QPlatformScreen
    • QPlatformServices
    • QPlatformSharedGraphicsCache(共有グラフィックスキャッシュ
    • QPlatformSurface
    • QPlatformWindow
  • スタイル/テーマ
    • Qプラットフォーム・テーマ
    • プラットフォーム・パレット
    • プラットフォームフォント
    • テーマのヒント
  • ネイティブのダイアログとメニュー
    • QPlatformDialogHelper
    • QPlatformMenu
    • QPlatformMenuBar
    • QPlatformMenuItem

注: QPA API の他にも、QtCoreのイベント ディスパッチャ抽象や RHI のレンダリング ハードウェア抽象など、Qt には多くのプラットフォーム抽象があります。QPA API は、主にウィンドウ システムの統合と関連サポートに重点を置いています。

QPA プラグイン

上記のインターフェースの具体的な実装は、QPA プラグイン(プラットフォーム プラグイン)の中にあり、Qt が動作するさまざまなプラットフォームのサポートを追加します。QPA プラグインは、QPlatform* クラスをサブクラス化することで実装されます。

次の表に、使用可能なプラットフォーム・プラグインをまとめます:

プラグイン名プラグイン名説明
qandroidQAndroidPlatformIntegrationAndroid サポート
qbsdfbQBsdFbIntegrationBsdFb サポート
qcocoaQCocoaIntegrationPluginmacOS サポート
qdirect2dQWindowsDirect2DIntegrationPluginqwindows プラグインと似ていますが、ラスターペイントエンジンをQPixmap およびQBackingStore 用の Direct2D ベースのペイントエンジンに置き換えています。
qdirectfbQDirectFbIntegrationPluginDirectFB はサーフェスが中心で、これはQPaintDevice に相当します。
qeglfsQEglFSIntegrationPlugin組み込み Linux デバイス用のEGLFSサポート。
qhaikuQHaikuIntegrationHaiku サポート。
qiosQIOSIntegrationPluginiOS サポート
qlinuxfbQLinuxFbIntegrationPlugin組み込み Linux デバイス用のLinuxFBサポート
qvncQVncIntegrationVNC サポート
qwayland
  • QWaylandIntegrationPlugin
  • QWaylandBrcmEglPlatformIntegrationPlugin
  • QWaylandEglPlatformIntegrationPlugin
  • QWaylandXCompositeEglPlatformIntegrationPlugin
  • QWaylandXCompositeGlxPlatformIntegrationPlugin
Wayland サポート
qwindowsQWindowsIntegrationPluginWindows サポート
qxcbQXcbIntegrationPluginX Window System (X11) サポート

QPA プラグインの選択

Qt は、プラットフォームに応じてデフォルトの QPA プラグインを選択します。環境変数QT_QPA_PLATFORM とコマンドライン引数-platform を使用すると、このデフォルトをオーバーライドできます。詳細については、QGuiApplication を参照してください。

QPA プラグインの作成

現時点では、QPA プラグインの作成に関する詳細なチュートリアル文書はありません。ただし、Qt に同梱されている 2 つの最小限のプラグインは、テストやその他の特別な目的に使用することができます:

  • qtbase/src/plugins/platforms/minimal/
  • qtbase/src/plugins/platforms/minimalegl/

qminimal プラグインは、Qt GUI に対してリンクするが、ウィンドウ システムの統合を必要としないツールに使用されます(例えば、qmlplugindump )。また、環境変数によって決定されたイメージファイルにウィンドウの内容をダンプするための診断サポートがあります。

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