QImageIOPlugin Class

QImageIOPlugin クラスは、画像フォーマットプラグインを記述するためのインターフェイスを定義します。詳細...

Header: #include <QImageIOPlugin>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
Inherits: QObject

注意:このクラスの関数はすべてリエントラントです。

パブリック型

flags Capabilities
enum Capability { CanRead, CanWrite, CanReadIncremental }

パブリック関数

QImageIOPlugin(QObject *parent = nullptr)
virtual ~QImageIOPlugin()
virtual QImageIOPlugin::Capabilities capabilities(QIODevice *device, const QByteArray &format) const = 0
virtual QImageIOHandler *create(QIODevice *device, const QByteArray &format = QByteArray()) const = 0

詳しい説明

QImageIOPlugin はQImageIOHandler オブジェクトを作成するためのファクトリです。このオブジェクトはQImageReaderQImageWriter によって内部的に使用され、Qt に異なる画像フォーマットのサポートを追加します。

画像入出力プラグインを作成するには、この基底クラスをサブクラス化し、純粋仮想関数capabilities() とcreate() を再実装し、Q_PLUGIN_METADATA() マクロでクラスをエクスポートします。詳細はQt プラグインの作成方法を参照してください。

画像フォーマットプラグインは、読み込み (CanRead)、書き込み (CanWrite)、インクリメンタル読み込み (CanReadIncremental)の3つの機能をサポートできます。サブクラスでcapabilities() を再実装して、画像フォーマットの機能を公開してください。

create() は、提供されたデバイスとフォーマットが適切に設定されたQImageIOHandler サブクラスのインスタンスを作成し、このハンドラを返します。

プラグインのjsonメタデータファイルには、プラグインがサポートする画像フォーマットの情報と、対応するMIMEタイプ(フォーマットごとに1つ)を含める必要があります。jpegプラグインの場合、たとえば次のようになります:

{
  "Keys": [ "jpg", "jpeg" ],
  "MimeTypes": [ "image/jpeg", "image/jpeg" ]
}

プラグインによってサポートする機能は異なります。例えば、GIFフォーマットの読み込みをサポートするプラグインと、書き込みをサポートするプラグインがあります。Qtは、capabilities()の返り値によって、ジョブに適したプラグインを選択します。複数のプラグインが同じ機能をサポートしている場合、Qtは任意に1つを選択します。

QImageIOHandler およびQt プラグインの作成方法も参照してください

メンバ型ドキュメント

enum QImageIOPlugin::Capability
flags QImageIOPlugin::Capabilities

この enum は、QImageIOPlugin の能力を記述します。

定数説明
QImageIOPlugin::CanRead0x1プラグインは画像を読み込むことができます。
QImageIOPlugin::CanWrite0x2プラグインは画像を書き込むことができます。
QImageIOPlugin::CanReadIncremental0x4プラグインは画像をインクリメンタルに読み込むことができる。

Capabilities型はQFlags<Capability>のtypedefである。Capabilitiesの値のORの組み合わせを格納する。

メンバ関数ドキュメント

[explicit] QImageIOPlugin::QImageIOPlugin(QObject *parent = nullptr)

与えられたparent で画像プラグインを構築します。これは、プラグインをエクスポートするmoc生成コードによって自動的に呼び出されます。

[virtual noexcept] QImageIOPlugin::~QImageIOPlugin()

画像フォーマットプラグインを破棄します。

明示的に呼び出す必要はありません。Qtはプラグインが使われなくなると自動的に破棄します。

[pure virtual] QImageIOPlugin::Capabilities QImageIOPlugin::capabilities(QIODevice *device, const QByteArray &format) const

device のデータとformat のフォーマットに基づいて、プラグインの能力を返します。device0 の場合は、単にその書式が読み書きできるかどうかを報告します。そうでない場合は、指定されたフォーマット(またはformat が空の場合はプラグインがサポートする任意のフォーマット)がdevice から読み取れるか、または に書き込めるかを判断しなければならない。これは、device の状態を変更することなく(通常はQIODevice::peek() を使用して)行う必要がある。

たとえば、QImageIOPlugin が BMP フォーマットをサポートし、format が空または"bmp" で、デバイス内のデータが"BM" の文字で始まる場合、この関数はCanRead を返す必要があります。format"bmp" で、device0 で、ハンドラが読み込みと書き込みの両方をサポートしている場合、この関数はCanRead |CanWrite を返すべきです。

フォーマット名は常に小文字で与えられる。

[pure virtual] QImageIOHandler *QImageIOPlugin::create(QIODevice *device, const QByteArray &format = QByteArray()) const

deviceformat が設定されたQImageIOHandler サブクラスを作成し、返します。format は、プラグイン・メタデータの"Keys" エントリにリストされている値か、空でなければなりません。空の場合は、device のデータがcapabilities() メソッドで認識されている必要があります(同様に空のフォーマット)。

フォーマット名は常に小文字で指定します。

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