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
- QPlatformAccessibility
- QPlatformBackingStore
- QPlatformClipboard
- QPlatformカーソル
- QPlatformDrag
- QPlatformFontDatabase
- QPlatformGraphicsBuffer
- QPlatformInputContext
- QPlatformOffscreenSurface
- QPlatformOpenGLContext
- QPlatformScreen
- QPlatformServices
- QPlatformSharedGraphicsCache
- QPlatformSurface
- QPlatformWindow
- スタイル/テーマ設定
- QPlatformTheme
- プラットフォームのパレット
- プラットフォームフォント
- テーマのヒント
- ネイティブのダイアログとメニュー
- QPlatformDialogHelper
- QPlatformMenu
- QPlatformMenuBar
- QPlatformMenuItem
注: QPA APIに加え 、Qt には他にも多くのプラットフォーム抽象化が存在します。例えば、 Qt Core や、RHI におけるレンダリング・ハードウェアの抽象化などです。QPA API は、主にウィンドウ・システムの統合および関連するサポートに重点を置いています。
QPA プラグイン
上記に挙げたインターフェースの具体的な実装は、QPAプラグイン(またはプラットフォームプラグイン)に存在し、Qtが動作するさまざまなプラットフォームへのサポートを追加します。QPAプラグインは、QPlatform* クラスをサブクラス化することで実装されます。
利用可能なプラットフォームプラグインの概要は、次の表にまとめられています:
| プラグイン名 | プラグインクラス名 | 説明 |
|---|---|---|
qandroid | QAndroidPlatformIntegration | Android サポート |
qbsdfb | QBsdFbIntegration | BsdFb サポート |
qcocoa | QCocoaIntegrationPlugin | macOS サポート |
qdirect2d | QWindowsDirect2DIntegrationPlugin | qwindows プラグインと似ていますが、QPixmap およびQBackingStore 向けに、ラスターペイントエンジンをDirect2Dベースのペイントエンジンに置き換えています。 |
qdirectfb | QDirectFbIntegrationPlugin | DirectFBはサーフェスを中心としており、これはQPaintDevice に相当します。 |
qeglfs | QEglFSIntegrationPlugin | 組み込みLinuxデバイス向けのEGLFSサポート。 |
qhaiku | QHaikuIntegration | Haikuのサポート |
qios | QIOSIntegrationPlugin | iOS 対応 |
qlinuxfb | QLinuxFbIntegrationPlugin | 組み込みLinuxデバイス向けのLinuxFBサポート。 |
qvnc | QVncIntegration | VNC サポート |
qwayland |
| Wayland サポート |
qwindows | QWindowsIntegrationPlugin | Windows サポート |
qxcb | QXcbIntegrationPlugin | X Window System (X11) 対応 |
QPAプラグインの選択
Qtは、プラットフォームに応じてデフォルトのQPAプラグインを選択します。環境変数QT_QPA_PLATFORM およびコマンドライン引数-platform を使用することで、このデフォルト設定を上書きできます。詳細については、QGuiApplication を参照してください。
プラグインをインストールするには、セミコロンで区切られたリストを指定できます。この場合、インストーラはリスト内の項目を順に確認し、利用可能な最初のプラグインをインストールします。
例:
-qpa xcb;wayland上記の行は、xcb プラグインが利用可能かどうかを確認し、利用できない場合はwaylandプラグインの有無を確認します。
QPAプラグインの作成
現時点では、QPAプラグインの作成に関する詳細なチュートリアルドキュメントは存在しません。ただし、テストやその他の特別な目的のためにQtに同梱されている2つの最小限のプラグインがあり、これらを例として利用できます:
qtbase/src/plugins/platforms/minimal/qtbase/src/plugins/platforms/minimalegl/
qminimal プラグインは、 Qt GUIに対してリンクされるが、ウィンドウシステムとの統合を必要としないツール(例:qmlplugindump )に使用されます。また、環境変数によって指定された通りにウィンドウの内容を画像ファイルにダンプする診断機能も備えています。
© 2026 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.