QImageIOPlugin 类
QImageIOPlugin 类定义了写入图像格式插件的接口。 更多...
头文件 | #include <QImageIOPlugin> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake | QT += gui |
继承自 | QObject |
- 所有成员的列表,包括继承成员
- QImageIOPlugin 是 插件类 的一部分。
注意: 此类中所有函数均 可重入。
公共类型
flags | 功能 |
枚举 | 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 对象的工厂,这些对象被 QImageReader 和 QImageWriter 内部使用,以支持 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::CanRead | 0x1 | 插件可以读取图片。 |
QImageIOPlugin::CanWrite | 0x2 | 插件可以写入图片。 |
QImageIOPlugin::CanReadIncremental | 0x4 | 插件可以增量地读取图片。 |
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
创建并返回一个设置了device和format的QImageIOHandler子类。该format必须来自插件元数据“Keys”条目中列出的值,或者为空。如果为空,则device中的数据必须已被capabilities()方法(同样为空格式)识别。
格式名称始终以小写给出。
© 2024 Qt公司有限公司。此处包含的文档贡献的版权归其 respective owners。提供的文档受GNU自由文档许可版本1.3条款许可,由自由软件基金会发布。Qt以及相关的商标是芬兰及/或其他国家的Qt公司