このページでは

ペイントデバイスとバックエンド

ペイントデバイスの作成

QPaintDevice クラスは、描画可能なオブジェクトの基底クラスです。つまり、QPainter は、QPaintDevice の任意のサブクラス上に描画することができます。QPaintDevice の描画機能は、QWidget 、QImage 、QPixmap 、QPicture 、QPrinter 、およびQOpenGLPaintDevice などによって実装されています。

ウィジェット

QWidget クラスは、 Qt Widgets モジュール内のユーザーインターフェース要素の基底クラスです。このクラスは、ウィンドウシステムからマウス、キーボード、その他のイベントを受け取り、画面上に自身の表現を描画します。

画像

QImage クラスは、I/Oおよびピクセルへの直接アクセスや操作のために設計・最適化された、ハードウェアに依存しない画像表現を提供します。QImage は、モノクロ、8ビット、32ビット、アルファブレンド画像など、いくつかの画像形式をサポートしています。

QImage をペイントデバイスとして使用する利点の一つは、プラットフォームに依存することなく、あらゆる描画操作のピクセル精度を保証できることです。もう一つの利点は、描画を現在のGUIスレッドとは別のスレッドで実行できることです。

Pixmap

QPixmap クラスは、画面上に画像を表示するために設計・最適化されたオフスクリーン画像表現です。QImage とは異なり、ピクマップ内のピクセルデータは内部にあり、基盤となるウィンドウシステムによって管理されます。つまり、ピクセルへのアクセスは、QPainter 関数を使用するか、QPixmap をQImage に変換することによってのみ可能です。

QPixmap を使用した描画を最適化するため、Qt ではQPixmapCache クラスを提供しています。このクラスを使用すると、生成にコストがかかる一時的なピクマップを、キャッシュの制限を超えるストレージ領域を使用することなく保存することができます。

また、Qt には、QPixmap を継承した利便性向上のためのクラスであるQBitmap も用意されています。QBitmap は、モノクロ(1 ビット深度)のピクマップを保証しており、主にカスタムQCursor およびQBrush オブジェクトの作成や、QRegion オブジェクトの構築に使用されます。

OpenGL ペイントデバイス

前述のように、Qt には Qt アプリケーションで OpenGL を簡単に利用できるようにするクラスが用意されています。例えば、QOpenGLPaintDevice は、QPainter によるレンダリングのために OpenGL API を有効にします。

Picture

QPicture クラスは、QPainter コマンドを記録・再生するペイントデバイスです。Pictureは、ペインターコマンドをプラットフォーム非依存の形式でIOデバイスにシリアル化します。QPicture は解像度にも依存しません。つまり、QPicture は、さまざまなデバイス(例えばsvg、pdf、ps、プリンター、画面など)で同じ外観で表示することができます。

Qt XMLでは、画像の読み込みと保存を行うために、QPicture::load()およびQPicture::save()関数に加え、ストリーミング演算子も提供されています。

カスタムバックエンド

新しいバックエンドのサポートを実装するには、QPaintDevice クラスを派生させ、仮想関数QPaintDevice::paintEngine() を再実装して、この特定のデバイス上で描画するためにどのペイントエンジンを使用すべきかをQPainter に指定します。実際にデバイス上で描画を行うためには、このペイントエンジンは、QPaintEngine クラスを派生させて作成されたカスタムペイントエンジンである必要があります。

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