QImageIOPlugin Class
Die Klasse QImageIOPlugin definiert eine Schnittstelle zum Schreiben eines Bildformat-Plugins. Mehr...
Kopfzeile: | #include <QImageIOPlugin> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
Vererbt: | QObject |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QImageIOPlugin ist Teil der Plugin-Klassen.
Hinweis: Alle Funktionen in dieser Klasse sind reentrant.
Öffentliche Typen
flags | Capabilities |
enum | Capability { CanRead, CanWrite, CanReadIncremental } |
Öffentliche Funktionen
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 |
Detaillierte Beschreibung
QImageIOPlugin ist eine Factory zur Erstellung von QImageIOHandler Objekten, die intern von QImageReader und QImageWriter verwendet werden, um Qt Unterstützung für verschiedene Bildformate hinzuzufügen.
Um ein Bild-I/O-Plugin zu schreiben, muss man diese Basisklasse unterklassifizieren, die rein virtuellen Funktionen capabilities() und create() reimplementieren und die Klasse mit dem Makro Q_PLUGIN_METADATA() exportieren. Siehe Wie man Qt Plugins erstellt für Details.
Ein Bildformat-Plugin kann drei Fähigkeiten unterstützen: Lesen (CanRead), Schreiben (CanWrite) und inkrementelles Lesen (CanReadIncremental). Reimplementieren Sie capabilities() in Ihrer Unterklasse, um die Fähigkeiten Ihres Bildformats darzustellen.
create() sollte eine Instanz Ihrer Unterklasse QImageIOHandler erstellen, wobei das angegebene Gerät und Format richtig eingestellt sind, und diesen Handler zurückgeben.
Die json-Metadaten-Datei für das Plugin muss Informationen über die Bildformate enthalten, die das Plugin unterstützt, zusammen mit den entsprechenden MIME-Typen (einen für jedes Format). Für ein jpeg-Plugin könnte dies zum Beispiel wie folgt aussehen:
{ "Keys": [ "jpg", "jpeg" ], "MimeTypes": [ "image/jpeg", "image/jpeg" ] }
Verschiedene Plugins können unterschiedliche Funktionen unterstützen. Zum Beispiel können Sie ein Plugin haben, das das Lesen des GIF-Formats unterstützt, und ein anderes, das das Schreiben unterstützt. Qt wählt das richtige Plugin für die Aufgabe aus, abhängig vom Rückgabewert von capabilities(). Wenn mehrere Plugins die gleiche Fähigkeit unterstützen, wird Qt willkürlich eines auswählen.
Siehe auch QImageIOHandler und How to Create Qt Plugins.
Dokumentation der Mitgliedstypen
enum QImageIOPlugin::Capability
flags QImageIOPlugin::Capabilities
Diese Aufzählung beschreibt die Fähigkeiten eines QImageIOPlugin.
Konstante | Wert | Beschreibung |
---|---|---|
QImageIOPlugin::CanRead | 0x1 | Das Plugin kann Bilder lesen. |
QImageIOPlugin::CanWrite | 0x2 | Das Plugin kann Bilder schreiben. |
QImageIOPlugin::CanReadIncremental | 0x4 | Das Plugin kann Bilder inkrementell lesen. |
Der Typ Capabilities ist ein Typedef für QFlags<Capability>. Er speichert eine ODER-Kombination von Capability-Werten.
Dokumentation der Mitgliedsfunktionen
[explicit]
QImageIOPlugin::QImageIOPlugin(QObject *parent = nullptr)
Konstruiert ein Bild-Plugin mit dem angegebenen parent. Dies wird automatisch durch den moc-generierten Code aufgerufen, der das Plugin exportiert.
[virtual noexcept]
QImageIOPlugin::~QImageIOPlugin()
Zerstört das Bildformat-Plugin.
Sie müssen dies nie explizit aufrufen. Qt vernichtet ein Plugin automatisch, wenn es nicht mehr verwendet wird.
[pure virtual]
QImageIOPlugin::Capabilities QImageIOPlugin::capabilities(QIODevice *device, const QByteArray &format) const
Gibt die Fähigkeiten des Plugins zurück, basierend auf den Daten in device und dem Format format. Wenn device 0
ist, sollte es einfach melden, ob das Format gelesen oder geschrieben werden kann. Andernfalls sollte versucht werden, festzustellen, ob das angegebene Format (oder jedes andere vom Plugin unterstützte Format, wenn format leer ist) von device gelesen oder in geschrieben werden kann. Dies sollte geschehen, ohne den Status von device zu ändern (typischerweise durch Verwendung von QIODevice::peek()).
Wenn zum Beispiel QImageIOPlugin das BMP-Format unterstützt, format entweder leer oder "bmp"
ist und die Daten im Gerät mit den Zeichen "BM"
beginnen, sollte diese Funktion CanRead zurückgeben. Wenn format "bmp"
ist, device 0
ist und der Handler sowohl das Lesen als auch das Schreiben unterstützt, sollte diese Funktion CanRead | CanWrite zurückgeben.
Formatnamen werden immer in Kleinbuchstaben angegeben.
[pure virtual]
QImageIOHandler *QImageIOPlugin::create(QIODevice *device, const QByteArray &format = QByteArray()) const
Erstellt eine Unterklasse QImageIOHandler und gibt diese zurück, wobei device und format gesetzt sind. Die format muss aus den Werten stammen, die im Eintrag "Keys"
in den Plugin-Metadaten aufgeführt sind, oder leer sein. Wenn sie leer ist, müssen die Daten in device von der Methode capabilities() erkannt worden sein (mit einem ebenfalls leeren Format).
Formatnamen werden immer in Kleinbuchstaben angegeben.
© 2025 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.