このページでは

プラットフォーム統合

アプリケーション開発用のクロスプラットフォーム・ツールキットとしての Qt の最大の強みは、ターゲットプラットフォームごとにアプリケーションコードを複製する必要性を排除できる点にあります。

Qt はアプリケーション作成における典型的なタスクの多くを解決しますが、Qt では対応できない特殊なケースや、プラットフォーム固有の API や別のツールキットを利用して機能を構築する方が理にかなっているケースが常に存在します。

こうしたユースケースに対応しつつ、アプリケーションロジックの大部分を Qt に処理させ続けるために、Qt は、単純な型変換からプラットフォーム固有のネイティブインターフェースに至るまで、幅広いプラットフォーム統合 API を提供しています。

型変換

QString 、QPoint 、QImage など、Qt の基本的なデータ型の多くは、ネイティブの同等の型との相互変換機能を提供しています。

たとえば、Appleプラットフォームで現在のユーザーのユーザー名を取得するには:

NSProcessInfo *processInfo = NSProcessInfo.processInfo;
QString userName = QString::fromNSString(processInfo.userName)

すべての型変換の完全なリストについては、「型変換の概要」を参照してください。

他の UI ツールキットとの統合

Qt は、アプリケーション開発のニーズの大部分を網羅する、包括的なクロスプラットフォーム UI コンポーネントおよびコントロールのセットを提供しています。しかし、Qt を他の UI ツールキットと統合することが必要になったり、有益になったりする状況もあります。

その一例として、他のツールキットで構築されたアプリケーションに Qt UI を組み込むことが挙げられます。例えば、既存のアプリケーション用のプラグインを実装する場合や、既存のコードベースに Qt を段階的に導入する場合などです。

もう一つのシナリオは、Qtアプリケーション内でネイティブまたはサードパーティ製のUI要素をホストすることです。例えば、Qtが提供していない特殊なコントロールにアクセスする場合などが挙げられます。

Qtがこれら2つのユースケースをどのようにサポートしているかについては、「Qtと他のUIツールキットの併用」を参照してください。

イベント処理

Qt XML におけるイベント処理のユースケースのほとんどは、QWindow::event() やその関連関数、あるいはQObject::installEventFilter() によるクロスプラットフォームのイベント配信によって十分にカバーされています。

これだけでは不十分な場合、Qt ではネイティブイベントの配信へのアクセスを提供しています。QCoreApplication::installNativeEventFilter() を使用すると、すべてのネイティブイベントを受信するグローバルイベントフィルタを設置できますが、ウィンドウごとのネイティブイベントはQWindow::nativeEvent() で処理できます。

注: ネイティブイベントの流れに干渉すると 、Qtが不整合な状態になる可能性があります。これらのAPIは、主にQtの既存のイベント処理を補完するために使用すべきであり、例えばQtがまだ処理していないイベントなどに対応する場合が該当します。

ネイティブインターフェース

上記のAPIではカバーされていないプラットフォーム固有の機能は、Qtのより汎用的なネイティブインターフェースメカニズムによって処理されます。これらのインターフェースは、それらが拡張するクラスのネイティブまたはプラットフォーム固有のAPIへのアクセスを提供します。

これらのインターフェースはQNativeInterface 名前空間にあり、基となるネイティブハンドルへのアクセス、既存のネイティブハンドルの採用、あるいはプラットフォーム固有のAPIの提供といったユースケースをカバーしています。

たとえば、macOS 上で、QNativeInterface::QCocoaGLContext ネイティブインターフェースを介して、QOpenGLContext の基になる NSOpenGLContext にアクセスするには、次のようにします。

using namespace QNativeInterface;
if (auto *cocoaGLContext = glContext->nativeInterface<QCocoaGLContext>())
    [cocoaGLContext->nativeContext() makeCurrentContext];

すべてのネイティブインターフェースの完全な一覧については、「ネイティブインターフェースの概要」を参照してください。

警告: ネイティブインターフェースAPIについては、ソースおよびバイナリの互換性が保証されていません 。つまり、これらのインターフェースを使用するアプリケーションは、開発時に使用したQtバージョンでのみ動作が保証されます。

プラットフォームのサポート

アプリケーション開発者向け API に加え、Qt は、Qt 内のクロスプラットフォーム構築ブロックの基盤となる実装を提供する際にも、プラットフォームと連携します。

その例としては、 Qt Core や、RHI におけるレンダリングハードウェアの抽象化などが挙げられます。

ここでの主な抽象化レイヤーは、Qt Platform Abstraction(略称 QPA)であり、ウィンドウシステムの統合や関連するユースケースを扱います。

© 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.