QWindowsMimeConverter Class

Die Klasse QWindowsMimeConverter bildet MIME-Formate nach offenem Standard auf Windows-Zwischenablageformate ab. Mehr...

Kopfzeile: #include <QWindowsMimeConverter>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui

Öffentliche Funktionen

QWindowsMimeConverter()
virtual ~QWindowsMimeConverter()
virtual bool canConvertFromMime(const FORMATETC &formatetc, const QMimeData *mimeData) const = 0
virtual bool canConvertToMime(const QString &mimeType, IDataObject *pDataObj) const = 0
virtual bool convertFromMime(const FORMATETC &formatetc, const QMimeData *mimeData, STGMEDIUM *pmedium) const = 0
virtual QVariant convertToMime(const QString &mimeType, IDataObject *pDataObj, QMetaType preferredType) const = 0
virtual QList<FORMATETC> formatsForMime(const QString &mimeType, const QMimeData *mimeData) const = 0
virtual QString mimeForFormat(const FORMATETC &formatetc) const = 0

Statische öffentliche Mitglieder

int registerMimeType(const QString &mimeType)

Detaillierte Beschreibung

Qt's Drag-and-Drop- und Clipboard-Funktionen verwenden den MIME-Standard. Unter X11 entspricht dies trivialerweise dem Xdnd-Protokoll, aber unter Windows verwenden zwar einige Anwendungen MIME-Typen, um die Formate der Zwischenablage zu beschreiben, aber andere verwenden willkürliche, nicht standardisierte Namenskonventionen oder unbenannte eingebaute Formate von Windows.

Durch Instanziierung von Unterklassen von QWindowsMimeConverter, die Konvertierungen zwischen Windows-Zwischenablage- und MIME-Formaten bereitstellen, können Sie proprietäre Zwischenablageformate in MIME-Formate konvertieren.

Konstruieren Sie eine Instanz Ihrer Konverter-Implementierung, nachdem Sie QGuiApplication instanziiert haben:

int main(int argc, char **argv)
{
    QGuiApplication app(argc, argv);
    JsonMimeConverter jsonConverter;
}

Das Zerstören der Instanz hebt die Registrierung des Konverters auf und entfernt die Unterstützung für die Konvertierung. Es ist auch zulässig, die Konverterinstanz im Heap zu allozieren; Qt übernimmt den Besitz und löscht das Konverterobjekt beim Herunterfahren von QGuiApplication.

Qt hat vordefinierte Unterstützung für die folgenden Windows-Zwischenablageformate:

Windows FormatÄquivalenter MIME-Typ
CF_UNICODETEXTtext/plain
CF_TEXTtext/plain
CF_DIBimage/xyz, wobei xyz ein Qt image format
CF_HDROPtext/uri-list
CF_INETURLtext/uri-list
CF_HTMLtext/html

Ein Beispiel für die Verwendung dieser Klasse wäre die Abbildung des Windows Metafile-Zwischenablageformats (CF_METAFILEPICT) in und aus dem MIME-Typ image/x-wmf. Diese Konvertierung könnte einfach das Hinzufügen oder Entfernen eines Headers sein, oder auch nur die Weitergabe der Daten. Weitere Informationen zur Auswahl und Definition von MIME-Typen finden Sie unter Drag and Drop.

Sie können prüfen, ob ein MIME-Typ konvertierbar ist, indem Sie canConvertFromMime() verwenden, und Sie können Konvertierungen mit convertToMime() und convertFromMime() durchführen.

Dokumentation der Mitgliedsfunktionen

QWindowsMimeConverter::QWindowsMimeConverter()

Konstruiert eine QWindowsMimeConverter-Instanz.

Die Instanz wird automatisch registriert und wird aufgerufen, um Daten während der Zwischenablage oder Drag'n'Drop-Operationen zu konvertieren.

Rufen Sie diesen Konstruktor auf, nachdem QGuiApplication erstellt worden ist.

[virtual noexcept] QWindowsMimeConverter::~QWindowsMimeConverter()

Konstruiert eine QWindowsMimeConverter Instanz.

Die Instanz wird automatisch unregistriert.

[pure virtual] bool QWindowsMimeConverter::canConvertFromMime(const FORMATETC &formatetc, const QMimeData *mimeData) const

Gibt true zurück, wenn der Konverter von mimeData in das in formatetc angegebene Format konvertieren kann.

Alle Unterklassen müssen diese rein virtuelle Funktion reimplementieren.

[pure virtual] bool QWindowsMimeConverter::canConvertToMime(const QString &mimeType, IDataObject *pDataObj) const

Gibt true zurück, wenn der Konverter aus den verfügbaren Formaten in pDataObj in das mimeType konvertieren kann.

Alle Unterklassen müssen diese rein virtuelle Funktion reimplementieren.

[pure virtual] bool QWindowsMimeConverter::convertFromMime(const FORMATETC &formatetc, const QMimeData *mimeData, STGMEDIUM *pmedium) const

Konvertieren Sie die mimeData in das unter formatetc angegebene Format. Die konvertierten Daten sollten dann in der Struktur pmedium abgelegt werden.

Gibt true zurück, wenn die Konvertierung erfolgreich war.

Alle Unterklassen müssen diese rein virtuelle Funktion reimplementieren.

[pure virtual] QVariant QWindowsMimeConverter::convertToMime(const QString &mimeType, IDataObject *pDataObj, QMetaType preferredType) const

Gibt ein QVariant zurück, das die konvertierten Daten für mimeType von pDataObj enthält. Wenn möglich, sollte QVariant von preferredType sein, um unnötige Konvertierungen zu vermeiden.

Alle Unterklassen müssen diese rein virtuelle Funktion reimplementieren.

[pure virtual] QList<FORMATETC> QWindowsMimeConverter::formatsForMime(const QString &mimeType, const QMimeData *mimeData) const

Gibt eine QList von FORMATETC-Strukturen zurück, die die verschiedenen Windows-Zwischenablageformate repräsentieren, die für die mimeType von der mimeData bereitgestellt werden können.

Alle Unterklassen müssen diese rein virtuelle Funktion reimplementieren.

[pure virtual] QString QWindowsMimeConverter::mimeForFormat(const FORMATETC &formatetc) const

Gibt den Mime-Typ zurück, der aus dem in formatetc angegebenen Format erstellt wird, oder einen leeren String, wenn dieser Konverter formatetc nicht unterstützt.

Alle Unterklassen müssen diese rein virtuelle Funktion reimplementieren.

[static] int QWindowsMimeConverter::registerMimeType(const QString &mimeType)

Registriert den MIME-Typ mimeType und gibt eine ID-Nummer zurück, die das Format unter Windows identifiziert.

Ein Mime-Typ application/x-qt-windows-mime;value="WindowsType" wird als Zwischenablageformat für WindowsType registriert.

© 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.