QMimeData Class
Die Klasse QMimeData bietet einen Container für Daten, die Informationen über ihren MIME-Typ aufzeichnen. Mehr...
Kopfzeile: | #include <QMimeData> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
Vererbungen: | QObject |
Öffentliche Funktionen
QMimeData() | |
virtual | ~QMimeData() |
void | clear() |
QVariant | colorData() const |
QByteArray | data(const QString &mimeType) const |
virtual QStringList | formats() const |
bool | hasColor() const |
virtual bool | hasFormat(const QString &mimeType) const |
bool | hasHtml() const |
bool | hasImage() const |
bool | hasText() const |
bool | hasUrls() const |
QString | html() const |
QVariant | imageData() const |
void | removeFormat(const QString &mimeType) |
void | setColorData(const QVariant &color) |
void | setData(const QString &mimeType, const QByteArray &data) |
void | setHtml(const QString &html) |
void | setImageData(const QVariant &image) |
void | setText(const QString &text) |
void | setUrls(const QList<QUrl> &urls) |
QString | text() const |
QList<QUrl> | urls() const |
Geschützte Funktionen
virtual QVariant | retrieveData(const QString &mimeType, QMetaType type) const |
Detaillierte Beschreibung
QMimeData wird verwendet, um Informationen zu beschreiben, die in clipboard gespeichert und über den Drag-and-Drop-Mechanismus übertragen werden können. QMimeData-Objekte assoziieren die Daten, die sie enthalten, mit den entsprechenden MIME-Typen, um sicherzustellen, dass Informationen sicher zwischen Anwendungen übertragen und innerhalb derselben Anwendung kopiert werden können.
QMimeData-Objekte werden in der Regel mit new
erstellt und an QDrag oder QClipboard Objekte übergeben. Dadurch wird Qt in die Lage versetzt, den von ihnen verwendeten Speicher zu verwalten.
Ein einziges QMimeData-Objekt kann dieselben Daten in mehreren verschiedenen Formaten gleichzeitig speichern. Die Funktion formats() gibt eine Liste der verfügbaren Formate in der Reihenfolge ihrer Bevorzugung zurück. Die Funktion data() gibt die einem MIME-Typ zugeordneten Rohdaten zurück, und mit setData() können Sie die Daten für einen MIME-Typ festlegen.
Für die gängigsten MIME-Typen bietet QMimeData Komfortfunktionen für den Zugriff auf die Daten:
Tester | Getter | Setzer | MIME-Typen |
---|---|---|---|
hasText() | text() | setText() | text/plain |
hasHtml() | html() | setHtml() | text/html |
hasUrls() | urls() | setUrls() | text/uri-list |
hasImage() | imageData() | setImageData() | image/ * |
hasColor() | colorData() | setColorData() | application/x-color |
Wenn Sie zum Beispiel ein Widget schreiben, das URL-Ziehungen akzeptiert, würden Sie am Ende Code wie diesen schreiben:
void MyWidget::dragEnterEvent(QDragEnterEvent *event) { if (event->mimeData()->hasUrls()) event->acceptProposedAction(); } void MyWidget::dropEvent(QDropEvent *event) { if (event->mimeData()->hasUrls()) { foreach (QUrl url, event->mimeData()->urls()) { ... } } }
Es gibt drei Ansätze für die Speicherung benutzerdefinierter Daten in einem QMimeData-Objekt:
- Benutzerdefinierte Daten können direkt in einem QMimeData-Objekt als QByteArray mit setData() gespeichert werden. Zum Beispiel:
QByteArray csvData = ...; QMimeData *mimeData = new QMimeData; mimeData->setData("text/csv", csvData);
- Wir können QMimeData unterklassifizieren und hasFormat(), formats() und retrieveData() reimplementieren.
- Wenn der Drag&Drop-Vorgang innerhalb einer einzigen Anwendung stattfindet, können wir QMimeData untergliedern, zusätzliche Daten hinzufügen und qobject_cast() im Drop-Event-Handler des Empfängers verwenden. Zum Beispiel:
void MyWidget::dropEvent(QDropEvent *event) { const MyMimeData *myData = qobject_cast<const MyMimeData *>(event->mimeData()); if (myData) { // access myData's data directly (not through QMimeData's API) } }
Plattform-spezifische MIME-Typen
Unter Windows gibt formats() auch benutzerdefinierte Formate zurück, die in den MIME-Daten verfügbar sind, wobei der Subtyp x-qt-windows-mime
verwendet wird, um anzuzeigen, dass sie Daten in Nicht-Standardformaten darstellen. Die Formate haben die folgende Form:
application/x-qt-windows-mime;value="<custom type>"
Im Folgenden sind Beispiele für benutzerdefinierte MIME-Typen aufgeführt:
application/x-qt-windows-mime;value="FileGroupDescriptor" application/x-qt-windows-mime;value="FileContents"
Die value
Deklaration jedes Formats beschreibt die Art und Weise, in der die Daten kodiert sind.
In einigen Fällen (z. B. beim Ablegen mehrerer E-Mail-Anhänge) sind mehrere Datenwerte verfügbar. Auf sie kann durch Hinzufügen eines index
Wertes zugegriffen werden:
application/x-qt-windows-mime;value="FileContents";index=0 application/x-qt-windows-mime;value="FileContents";index=1
Unter Windows wird das MIME-Format nicht immer direkt auf die Formate der Zwischenablage abgebildet. Qt bietet QWindowsMimeConverter, um die Formate der Zwischenablage auf die MIME-Formate des offenen Standards abzubilden. Auf ähnliche Weise bildet QUtiMimeConverter MIME auf Uniform Type Identifiers unter macOS und iOS ab.
Siehe auch QClipboard, QDragEnterEvent, QDragMoveEvent, QDropEvent, QDrag, und Drag and Drop.
Dokumentation der Mitgliedsfunktionen
QMimeData::QMimeData()
Konstruiert ein neues MIME-Datenobjekt, das keine Daten enthält.
[virtual noexcept]
QMimeData::~QMimeData()
Zerstört das MIME-Datenobjekt.
void QMimeData::clear()
Entfernt alle MIME-Typ- und Dateneinträge des Objekts.
QVariant QMimeData::colorData() const
Gibt eine Farbe zurück, wenn die im Objekt gespeicherten Daten eine Farbe darstellen (MIME-Typ application/x-color
); andernfalls wird eine Null-Variante zurückgegeben.
Ein QVariant wird verwendet, weil QMimeData zum Modul Qt Core gehört, während QColor zu Qt GUI gehört. Um QVariant in QColor umzuwandeln, verwenden Sie einfach qvariant_cast(). Ein Beispiel:
if (event->mimeData()->hasColor()) { QColor color = qvariant_cast<QColor>(event->mimeData()->colorData()); ... }
Siehe auch hasColor(), setColorData(), und data().
QByteArray QMimeData::data(const QString &mimeType) const
Gibt die im Objekt gespeicherten Daten in dem Format zurück, das durch den von mimeType angegebenen MIME-Typ beschrieben wird. Wenn dieses Objekt keine Daten für den MIME-Typ mimeType (siehe hasFormat()) enthält, kann diese Funktion eine bestmögliche Konvertierung in diesen Typ vornehmen.
Siehe auch hasFormat() und setData().
[virtual]
QStringList QMimeData::formats() const
Gibt eine Liste der von dem Objekt unterstützten Formate zurück. Dies ist eine Liste von MIME-Typen, für die das Objekt geeignete Daten zurückgeben kann. Die Formate in der Liste sind nach Priorität geordnet.
Für die gängigsten Datentypen können Sie stattdessen die übergeordneten Funktionen hasText(), hasHtml(), hasUrls(), hasImage() und hasColor() aufrufen.
Siehe auch hasFormat(), setData(), und data().
bool QMimeData::hasColor() const
Gibt true
zurück, wenn das Objekt eine Farbe zurückgeben kann (MIME-Typ application/x-color
); andernfalls wird false
zurückgegeben.
Siehe auch setColorData(), colorData(), und hasFormat().
[virtual]
bool QMimeData::hasFormat(const QString &mimeType) const
Gibt true
zurück, wenn das Objekt Daten für den durch mimeType angegebenen MIME-Typ zurückgeben kann; andernfalls wird false
zurückgegeben.
Für die gängigsten Datentypen können Sie stattdessen die übergeordneten Funktionen hasText(), hasHtml(), hasUrls(), hasImage() und hasColor() aufrufen.
Siehe auch formats(), setData(), und data().
bool QMimeData::hasHtml() const
Gibt true
zurück, wenn das Objekt HTML zurückgeben kann (MIME-Typ text/html
); andernfalls false
.
Siehe auch setHtml(), html(), und hasFormat().
bool QMimeData::hasImage() const
Gibt true
zurück, wenn das Objekt ein Bild zurückgeben kann; andernfalls wird false zurückgegeben.
Siehe auch setImageData(), imageData(), und hasFormat().
bool QMimeData::hasText() const
Gibt true
zurück, wenn das Objekt reinen Text (MIME-Typ text/plain
) zurückgeben kann; andernfalls wird false
zurückgegeben.
Siehe auch setText(), text(), hasHtml(), und hasFormat().
bool QMimeData::hasUrls() const
Gibt true
zurück, wenn das Objekt eine Liste von URLs zurückgeben kann; andernfalls wird false
zurückgegeben.
URLs entsprechen dem MIME-Typ text/uri-list
.
Siehe auch setUrls(), urls(), und hasFormat().
QString QMimeData::html() const
Gibt eine Zeichenkette zurück, wenn die im Objekt gespeicherten Daten HTML sind (MIME-Typ text/html
); andernfalls wird eine leere Zeichenkette zurückgegeben.
Siehe auch setHtml(), hasHtml(), und setData().
QVariant QMimeData::imageData() const
Gibt ein QVariant zurück, das ein QImage speichert, wenn das Objekt ein Bild zurückgeben kann; andernfalls wird eine Nullvariante zurückgegeben.
Ein QVariant wird verwendet, weil QMimeData zum Modul Qt Core gehört, während QImage zu Qt GUI gehört. Um QVariant in QImage umzuwandeln, verwenden Sie einfach qvariant_cast(). Ein Beispiel:
if (event->mimeData()->hasImage()) { QImage image = qvariant_cast<QImage>(event->mimeData()->imageData()); ... }
Siehe auch setImageData() und hasImage().
void QMimeData::removeFormat(const QString &mimeType)
Entfernt den Dateneintrag für mimeType aus dem Objekt.
[virtual protected]
QVariant QMimeData::retrieveData(const QString &mimeType, QMetaType type) const
Gibt eine Variante mit dem angegebenen type zurück, die Daten für den durch mimeType angegebenen MIME-Typ enthält. Wenn das Objekt den angegebenen MIME-Typ oder Variantentyp nicht unterstützt, wird stattdessen eine Null-Variante zurückgegeben.
Diese Funktion wird vom allgemeinen Getter data() und von den Convenience Gettern (text(), html(), urls(), imageData() und colorData()) aufgerufen. Sie können ihn neu implementieren, wenn Sie Ihre Daten unter Verwendung einer benutzerdefinierten Datenstruktur speichern möchten (anstelle einer QByteArray, die setData() bereitstellt). Sie müssten dann auch hasFormat() und formats() neu implementieren.
Siehe auch data().
void QMimeData::setColorData(const QVariant &color)
Setzt die Farbdaten des Objekts auf die angegebene color.
Die Farben entsprechen dem MIME-Typ application/x-color
.
Siehe auch colorData(), hasColor(), und setData().
void QMimeData::setData(const QString &mimeType, const QByteArray &data)
Setzt die Daten, die mit dem durch mimeType angegebenen MIME-Typ verbunden sind, auf den angegebenen data.
Für die gängigsten Datentypen können Sie stattdessen die übergeordneten Funktionen setText(), setHtml(), setUrls(), setImageData() und setColorData() aufrufen.
Beachten Sie, dass Sie, wenn Sie einen benutzerdefinierten Datentyp in einer Drag&Drop-Operation in der Elementansicht verwenden möchten, diesen als Qt meta type registrieren müssen, indem Sie das Makro Q_DECLARE_METATYPE() verwenden, und Stream-Operatoren für ihn implementieren.
Siehe auch data(), hasFormat(), QMetaType, und Q_DECLARE_METATYPE().
void QMimeData::setHtml(const QString &html)
Legt html als den HTML-Typ (MIME-Typ text/html
) fest, der zur Darstellung der Daten verwendet wird.
Siehe auch html(), hasHtml(), setText(), und setData().
void QMimeData::setImageData(const QVariant &image)
Setzt die Daten des Objekts auf die angegebene image.
Es wird ein QVariant verwendet, da QMimeData zum Modul Qt Core gehört, während QImage zu Qt GUI gehört. Die Konvertierung von QImage nach QVariant ist implizit. Ein Beispiel:
mimeData->setImageData(QImage("beautifulfjord.png"));
Siehe auch imageData(), hasImage(), und setData().
void QMimeData::setText(const QString &text)
Legt text als reinen Text (MIME-Typ text/plain
) fest, der zur Darstellung der Daten verwendet wird.
Siehe auch text(), hasText(), setHtml(), und setData().
void QMimeData::setUrls(const QList<QUrl> &urls)
Setzt die im MIME-Datenobjekt gespeicherten URLs auf die von urls angegebenen.
Die URLs entsprechen dem MIME-Typ text/uri-list
.
Seit Qt 5.0 exportiert setUrls die URLs auch als reinen Text, wenn setText nicht vorher aufgerufen wurde, um sie in jeden Lineedit- und Texteditor einfügen zu können.
Siehe auch urls(), hasUrls(), und setData().
QString QMimeData::text() const
Gibt die Klartextdarstellung (MIME-Typ text/plain
) der Daten zurück, wenn dieses Objekt Klartext enthält. Wenn es einen anderen Inhalt enthält, versucht diese Funktion, ihn in Klartext zu konvertieren.
Siehe auch setText(), hasText(), html(), und data().
QList<QUrl> QMimeData::urls() const
Gibt eine Liste der im MIME-Datenobjekt enthaltenen URLs zurück.
Die URLs entsprechen dem MIME-Typ text/uri-list
.
© 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.