QImageIOPlugin 类

QImageIOPlugin 类定义了写入图像格式插件的接口。 更多...

头文件 #include <QImageIOPlugin>
CMakefind_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmakeQT += gui
继承自 QObject

注意: 此类中所有函数均 可重入

公共类型

flags功能
枚举Capability { CanRead, CanWrite, CanReadIncremental }

公共函数

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

详细描述

QImageIOPlugin 是创建 QImageIOHandler 对象的工厂,这些对象被 QImageReaderQImageWriter 内部使用,以支持 Qt 中的不同图像格式。

通过从该基类派生并重新实现纯虚函数 capabilities() 和 create() 来编写图像 I/O 插件,并使用 Q_PLUGIN_METADATA() 宏导出类。有关详细信息,请参阅 如何创建 Qt 插件

图像格式插件可以支持三种功能:读取(《CanRead》),写入(《CanWrite》)和“增量读取”(《CanReadIncremental》)。在派生类中重新实现 capabilities() 以显示图像格式的功能。

函数 create() 应创建您的 QImageIOHandler 子类的一个实例,并正确设置提供设备和格式,然后返回此处理程序。

该插件的 json 元数据文件需要包含插件支持的图像格式以及相应的 MIME 类型(每种格式对应一个)。例如,对于 jpeg 插件,它可以如下所示

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

不同的插件可以支持不同的功能。例如,您可能有一个支持读取GIF格式的插件,另一个支持写入。Qt将根据abilities()函数的返回值选择合适的插件来完成工作。如果多个插件支持相同的功能,Qt将随机选择一个。

另请参阅QImageIOHandler如何创建Qt插件

成员类型文档

enum QImageIOPlugin::Capability
flags QImageIOPlugin::Capabilities

此枚举描述了QImageIOPlugin的功能。

常量描述
QImageIOPlugin::CanRead0x1插件可以读取图片。
QImageIOPlugin::CanWrite0x2插件可以写入图片。
QImageIOPlugin::CanReadIncremental0x4插件可以增量地读取图片。

Capabilities类型是QFlags<Capability>的类型别名。它存储了Capability值的OR组合。

成员函数文档

[显式构造]QImageIOPlugin::QImageIOPlugin(QObject *parent = nullptr)

构造具有指定父对象的图像插件。这是由导出插件的moc生成的代码自动调用的。

[虚拟 noexcept]QImageIOPlugin::~QImageIOPlugin()

销毁图片格式插件。

您从不需显式调用此函数。当插件不再使用时,Qt会自动销毁插件。

[纯虚] QImageIOPlugin::CapabilitiesQImageIOPlugin::capabilities(QIODevice *device, const QByteArray &format) const

根据设备中的数据和格式格式返回插件的功能。如果设备0,则应简单地报告该格式是否可读或可写。否则,它应尝试确定给定格式(如果格式为空,则支持插件上的任何格式)可从设备中读取或写入。它应在不更改设备的状态的情况下完成此操作(通常通过使用QIODevice::peek())。

例如,如果QImageIOPlugin支持BMP格式,格式要么为空,要么为"bmp",并且设备中的数据以字符"BM"开始,则此函数应返回CanRead。如果格式"bmp"设备0,并且处理程序支持读取和写入,则此函数应返回CanRead | CanWrite

格式名称始终以小写给出。

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

创建并返回一个设置了deviceformatQImageIOHandler子类。该format必须来自插件元数据“Keys”条目中列出的值,或者为空。如果为空,则device中的数据必须已被capabilities()方法(同样为空格式)识别。

格式名称始终以小写给出。

© 2024 Qt公司有限公司。此处包含的文档贡献的版权归其 respective owners。提供的文档受GNU自由文档许可版本1.3条款许可,由自由软件基金会发布。Qt以及相关的商标是芬兰及/或其他国家的Qt公司商标。所有其他商标均归其 respective owners所有。