Класс QImageIOPlugin
Класс QImageIOPlugin определяет интерфейс для написания плагина формата изображения. Подробнее...
| Заголовок: | #include <QImageIOPlugin> |
| CMake: | find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| Наследует: | QObject |
Примечание: Все функции в этом классе являются перевходными.
Типы
| флаги | Возможности |
| перечисление | Возможность { МожноЧитать, МожноЗаписывать, МожноЧитатьПоЧастям } |
Открытые функции
| QImageIOPlugin(QObject *parent = nullptr) | |
| виртуальный | ~QImageIOPlugin() |
| виртуальный QImageIOPlugin::Возможности | возможности(QIODevice *device, const QByteArray &format) const = 0 |
| виртуальный QImageIOHandler * | создать(QIODevice *device, const QByteArray &format = QByteArray()) const = 0 |
Подробное описание
QImageIOPlugin — фабрика для создания объектов QImageIOHandler, которые используются внутри QImageReader и QImageWriter для добавления поддержки различных форматов изображений в Qt.
Создание плагина ввода/вывода изображений осуществляется путем наследования от этого базового класса, переопределения чистых виртуальных функций возможности() и создать(), и экспорта класса с помощью макроса Q_PLUGIN_METADATA(). Подробности см. в разделе Как создавать плагины Qt.
Плагин формата изображения может поддерживать три возможности: чтение (МожноЧитать), запись (МожноЗаписывать) и последовательное чтение (МожноЧитатьПоЧастям). В своем подклассе переопределите возможности(), чтобы раскрыть возможности своего формата изображения.
создать() должно создать экземпляр вашего подкласса QImageIOHandler с заданными параметрами устройства и формата и вернуть этот обработчик.
Файл метаданных json для плагина должен содержать информацию о форматах изображений, поддерживаемых плагином, вместе с соответствующими типами MIME (по одному для каждого формата). Например, для плагина jpeg это может выглядеть следующим образом:
{
"Keys": [ "jpg", "jpeg" ],
"MimeTypes": [ "image/jpeg", "image/jpeg" ]
} Различные плагины могут поддерживать разные возможности. Например, у вас может быть один плагин, поддерживающий чтение формата GIF, и другой — запись. Qt выберет правильный плагин для задачи в зависимости от значения возвращаемого функцией возможности(). Если несколько плагинов поддерживают одну и ту же возможность, Qt выберет одну произвольно.
См. также QImageIOHandler и Как создавать плагины Qt.
Документация по типам членов
перечисление QImageIOPlugin::Возможностьфлаги QImageIOPlugin::Возможности
Это перечисление описывает возможности QImageIOPlugin.
| Постоянная | Значение | Описание |
|---|---|---|
QImageIOPlugin::CanRead |
0x1 |
Плагин может читать изображения. |
QImageIOPlugin::CanWrite |
0x2 |
Плагин может записывать изображения. |
QImageIOPlugin::CanReadIncremental |
0x4 |
Плагин может читать изображения по частям. |
Тип Возможности — это псевдоним для QFlags<Возможность>. Он хранит комбинацию значений Возможности по оператору OR.
Документация по функциям-членам
QImageIOPlugin::QImageIOPlugin(QObject *parent = nullptr)
Конструирует плагин изображений с заданным parent. Этот метод вызывается автоматически сгенерированным moc-кодом, который экспортирует плагин.
[virtual] QImageIOPlugin::~QImageIOPlugin()
Уничтожает плагин формата изображения.
Вам никогда не нужно вызывать этот метод явно. Qt уничтожает плагин автоматически, когда он больше не используется.
[pure virtual] QImageIOPlugin::Возможности QImageIOPlugin::возможности(QIODevice *device, const QByteArray &format) const
Возвращает возможности плагина на основе данных в device и формате format. Если device пуст, нужно просто сообщить, можно ли прочитать или записать формат. В противном случае необходимо попытаться определить, можно ли прочитать или записать указанный формат (или любой поддерживаемый плагином формат, если format пуст) из или в device. Это необходимо сделать без изменения состояния device (обычно, с помощью QIODevice::peek()).
Например, если QImageIOPlugin поддерживает формат BMP, format пусто или "bmp", и данные в устройстве начинаются с символов "BM", эта функция должна вернуть МожноЧитать. Если format пусто, device пуст, и обработчик поддерживает как чтение, так и запись, эта функция должна вернуть МожноЧитать | МожноЗаписывать.
Имена форматов всегда задаются строчными буквами.
[pure virtual] QImageIOHandler *QImageIOPlugin::создать(QIODevice *device, const QByteArray &format = QByteArray()) const
Создает и возвращает подкласс QImageIOHandler с заданными device и format. format должен быть получен из значений, указанных в записи "Keys" в метаданных плагина, или быть пустым. Если он пустой, данные в device должны быть распознаны методом возможности() (с аналогично пустым форматом).
Имена форматов всегда задаются строчными буквами.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qimageioplugin.html