このページでは

グラフィックス

クロスプラットフォームアプリケーションでは、Qt を使用してグラフィカル要素を表示できます。Qt は、プラットフォームの基盤となるグラフィックス API を抽象化するため、開発者はアプリケーションのコードに集中することができます。

QtとターゲットのグラフィックスAPIの間に位置する、Qtレンダリングハードウェアインターフェース

Qt レンダリング・ハードウェア・インターフェース (RHI) は、Qt アプリケーションからの 3D グラフィックス呼び出しを、ターゲットプラットフォームで利用可能なグラフィックス API に変換します。

サポートされているグラフィックス API は次のとおりです。

  • OpenGL(バージョン 2.1 以降)
  • OpenGL ES(バージョン 2.0 以降)
  • Vulkan(バージョン 1.0 以降)
  • Direct3D 11(バージョン 11.1 以降)
  • Direct3D 12 (バージョン 12.0 以降)
  • Metal(バージョン 1.2 以降)

アプリケーションのQt Quick

Qt Quick アプリケーションのグラフィックスは、レンダリングにシーングラフを使用します。シーングラフ・レンダラーは、効率的なグラフィックス呼び出しを生成し、パフォーマンスを向上させることができます。シーングラフにはアクセス可能な API が用意されており、複雑でありながら高速なグラフィックスを柔軟に作成できます。

以下のリストにあるページには、Qt Quick アプリケーションのレンダリングに関する詳細情報が記載されています。

レンダリングパスの選択

Qtは可能な限りターゲットプラットフォームのグラフィックスAPIを使用しますが、特定のAPIを使用してQtのレンダリングパスを設定することも可能です。多くの場合、特定のAPIを選択することでパフォーマンスが向上し、開発者は特定のグラフィックスAPIを備えたプラットフォームにデプロイできるようになります。QQuickWindow でのレンダリングパスの設定方法については、「Qt Rendering Hardware Interface によるレンダリング」のページをご覧ください。

2D グラフィックス

Qtには、2Dグラフィックスプリミティブを描画するための複数のAPIが用意されています。利用可能な機能の概要については、「Qtにおける2Dグラフィックス」の別ページを参照してください。

Qt Quick 3D による 3D グラフィックス

Qt Quick 3Dは、Qt Quick に基づいて3Dコンテンツや3Dユーザーインターフェースを作成するための高レベルAPIを提供するアドオンです。これはQt Quick のシーングラフを拡張しており、2DのQt Quick アプリケーション上で3Dコンテンツを実装することを可能にします。

Qt 6のベンチマークデモでQt Quick 3Dシーンを実行している様子

シェーダーエフェクト

QtShader Toolsには、頂点シェーダーおよびフラグメントシェーダーをQt Quick インターフェース用のパッケージに変換するツール「QSB」が用意されています。特に、ShaderEffect の QML タイプおよびQSGMaterial のサブクラスは、QSB の出力を利用できます。Qt Quick 3Dには、シェーダーを 3D シーンにインポートするための独自のフレームワークがあります。

以下のリストには、シェーダーエフェクトに関する情報が記載されています。

シェーダー効果を示すQt Quick 3Dシーン

Qt による高レベルなグラフィックスQt GUI

Qt GUI XML-PH-0000@deepl.internalは、高レベルのウィンドウ、ペイント、およびタイポグラフィシステムを提供します。QPainter は、ベクターグラフィックス、テキスト、および画像を、さまざまなサーフェス、あるいはQPaintDevice インスタンス(QImage 、QOpenGLPaintDevice 、QWidget 、QPrinter など)に描画するための API を提供します。Qt Widgets ユーザーインターフェースの場合、Qt はソフトウェアレンダラーを使用します。

以下のリストには、Qt GUI の高レベル描画 API に関する情報が記載されています。

低レベルグラフィックスとQt GUI

Qt GUI は、OpenGL コンテキストおよび Vulkan インスタンスを管理するためのクロスプラットフォーム対応機能を提供します。OpenGL、OpenGL ES、または Vulkan を使用して直接レンダリングを行うアプリケーションは、QOpenGLContext 、QOpenGLFunctions 、QVulkanInstance 、QVulkanFunctions 、およびQVulkanDeviceFunctions を使用して、コンテキストやインスタンスを管理し、移植性の高い方法で OpenGL および Vulkan API 関数にアクセスすることができます。

Qt GUI また、Qt自体がQt Quick シーングラフやQt Quick 3Dレンダリングエンジンを実装するために使用している、移植性が高くクロスプラットフォームな3Dレンダリングインフラストラクチャを使用してレンダリングを実行したいアプリケーション向けに、QRhi やQShader などのQt Rendering Hardware Interface (RHI) ファミリーのAPIも提供しています。 これらのクラスは、Qt Platform Abstractionのクラスと同様に、当面の間、互換性の保証が限定的な「セミパブリック」APIとして提供されています。ただし、QRhi のクラスには完全なドキュメントが付属しています。使い始めるには、QRhi クラスを参照してください。

この Qt GUI モジュール単体では、QRhi ベースのレンダリングを使用して、QWindow や、QRhiTexture などのオフスクリーンバッファをターゲットに設定できます。QWidget やQML(Qt Quick )に基づくユーザーインターフェースの場合、ネイティブプラットフォームに裏打ちされたQWindow を使用することが、必ずしも最も便利な方法とは限りません。そのため、 Qt Widgets モジュールはQRhiWidget を提供し、一方Qt Quick はQQuickRhiItem を提供しています。これらの基底クラスを使用することで、QWidget やQQuickItem のサブクラスを簡単に作成できます。そのインスタンスは、QRhi ベースの移植性の高いレンダリングをテクスチャ内で行い、そのテクスチャはWidgetsやQt Quick のシーンと自動的に合成されます。

Qt OpenGL モジュール

この Qt OpenGL モジュールは、OpenGL へのアクセスを必要とするアプリケーション向けです。このモジュールは、Qt 5 アプリケーションおよびQt GUI との互換性を維持するためのものです。QWidget を使用するユーザーインターフェースの場合、QOpenGLWidget は OpenGL シーンを追加できるウィジェットです。

印刷

Qt は、ローカルまたはネットワーク上の実際のプリンタへの直接印刷と、PDF 出力の両方をサポートしています。Qt での印刷方法については、 Qt Print Support ページで詳しく説明されています。

画像

Qt は、QImage クラスを通じて、画像の読み取り、書き込み、および操作を便利に行えるようにサポートしています。さらに、画像の読み込みや保存の方法をより細かく制御するには、それぞれQImageReader クラスとQImageWriter クラスを使用できます。Qt が提供する画像形式以外に、追加の画像形式のサポートを追加するには、QImageIOHandler およびQImageIOPlugin を使用して画像形式プラグインを作成できます。

詳細については、「画像ファイルの読み書き」のページを参照してください。

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