QMimeData Class
Die Klasse „QMimeData“ stellt einen Container für Daten bereit, der Informationen über deren MIME-Typ enthält. Mehr...
| Kopfzeile: | #include <QMimeData> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| Erbt von: | 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 |
Ausführliche Beschreibung
QMimeData dient zur Beschreibung von Informationen, die im ` clipboard` gespeichert und über den Drag-and-Drop-Mechanismus übertragen werden können. QMimeData-Objekte ordnen die von ihnen gespeicherten Daten den entsprechenden MIME-Typen zu, 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 die Verwaltung des von ihnen belegten Speichers ermöglicht.
Ein einzelnes QMimeData-Objekt kann dieselben Daten gleichzeitig in mehreren verschiedenen Formaten speichern. Die Funktion ` formats()` gibt eine Liste der verfügbaren Formate in der Reihenfolge ihrer Präferenz zurück. Die Funktion ` data()` gibt die mit einem MIME-Typ verknüpften Rohdaten zurück, und mit ` setData()` können Sie die Daten für einen MIME-Typ festlegen.
Für die gängigsten MIME-Typen stellt QMimeData Komfortfunktionen für den Zugriff auf die Daten bereit:
| Tester | Getter | Setter | 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 beispielsweise ein Widget schreiben, das das Ziehen von URLs akzeptiert, würden Sie am Ende Code wie den folgenden 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, um benutzerdefinierte Daten in einem QMimeData-Objekt zu speichern:
- Benutzerdefinierte Daten können mithilfe von ` setData()` direkt in einem `QMimeData`-Objekt als ` QByteArray ` gespeichert werden. Zum Beispiel:
QByteArray csvData = something; QMimeData *mimeData = new QMimeData; mimeData->setData("text/csv", csvData); - Wir können eine Unterklasse von `QMimeData` erstellen und die Methoden ` hasFormat()`, ` formats()` sowie ` retrieveData()` neu implementieren.
- Wenn der Drag-and-Drop-Vorgang innerhalb einer einzigen Anwendung stattfindet, können wir eine Unterklasse von `QMimeData` erstellen, dort zusätzliche Daten hinzufügen und im `drop`-Ereignis-Handler des Empfängers ` qobject_cast()` 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) } }
Plattformspezifische 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 anzugeben, dass es sich um Daten in nicht standardmäßigen Formaten handelt. Die Formate haben die folgende Form:
application/x-qt-windows-mime;value="<custom type>"Im Folgenden finden Sie Beispiele für benutzerdefinierte MIME-Typen:
application/x-qt-windows-mime;value="FileGroupDescriptor"
application/x-qt-windows-mime;value="FileContents"Die Deklaration ` value ` jedes Formats beschreibt die Art und Weise, wie die Daten kodiert sind.
In einigen Fällen (z. B. beim Ablegen mehrerer E-Mail-Anhänge) stehen mehrere Datenwerte zur Verfügung. Auf diese kann durch Hinzufügen eines „ index “-Werts zugegriffen werden:
application/x-qt-windows-mime;value="FileContents";index=0
application/x-qt-windows-mime;value="FileContents";index=1Unter Windows entspricht das MIME-Format nicht immer direkt den Formaten der Zwischenablage. Qt stellt „ QWindowsMimeConverter “ zur Verfügung, um Formate der Zwischenablage auf offene MIME-Standards abzubilden. In ähnlicher Weise bildet „ QUtiMimeConverter “ unter macOS und iOS MIME-Typen auf Uniform Type Identifiers ab.
Siehe auch „ QClipboard“ , „ QDragEnterEvent “, „ QDragMoveEvent “, „ QDropEvent “, „ QDrag “ und „Drag and Drop“.
Dokumentation zu Mitgliedsfunktionen
QMimeData::QMimeData()
Erstellt ein neues MIME-Datenobjekt, das keine Daten enthält.
[virtual noexcept] QMimeData::~QMimeData()
Löscht das MIME-Datenobjekt.
void QMimeData::clear()
Entfernt alle MIME-Typ- und Dateneinträge aus dem Objekt.
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.
Es wird ein ` QVariant ` verwendet, da ` QMimeData ` zum Modul ` Qt Core ` gehört, während ` QColor ` zum Modul ` Qt GUI` gehört. Um den ` QVariant ` in einen ` QColor` zu konvertieren, verwenden Sie einfach ` qvariant_cast()`. 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 unter mimeType angegebenen MIME-Typ beschrieben wird. Wenn dieses Objekt keine Daten für den MIME-Typ mimeType enthält (siehe hasFormat()), führt diese Funktion möglicherweise eine Konvertierung nach bestem Bemühen in diesen Typ durch.
Siehe auch hasFormat() und setData().
[virtual] QStringList QMimeData::formats() const
Gibt eine Liste der vom Objekt unterstützten Formate zurück. Dabei handelt es sich um 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 wird „ false “ zurückgegeben.
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 Klartext zurückgeben kann (MIME-Typ „ text/plain “); 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.
Die 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 eine „ QVariant “ zurück, die ein „ QImage “ enthält, sofern das Objekt ein Bild zurückgeben kann; andernfalls wird eine „null variant“ zurückgegeben.
Es wird eine ` QVariant ` verwendet, da ` QMimeData ` zum Modul ` Qt Core ` gehört, während ` QImage ` zum Modul ` Qt GUI` gehört. Um die ` QVariant ` in eine ` QImage` zu konvertieren, verwenden Sie einfach ` qvariant_cast()`. Beispiel:
if (event->mimeData()->hasImage()) {
QImage image = qvariant_cast<QImage>(event->mimeData()->imageData());
//...
}Siehe auch setImageData() und hasImage().
void QMimeData::removeFormat(const QString &mimeType)
Löscht den Dateneintrag für „ mimeType “ im 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()` sowie von den Komfort-Gettern `text()`, ` html()`, ` urls()`, ` imageData()` und ` colorData()` aufgerufen. Sie können sie neu implementieren, wenn Sie Ihre Daten mithilfe einer benutzerdefinierten Datenstruktur speichern möchten (anstelle eines ` QByteArray`, wie es von ` setData()` bereitgestellt wird). In diesem Fall müssten Sie auch hasFormat() und formats() neu implementieren.
Siehe auch data().
void QMimeData::setColorData(const QVariant &color)
Setzt die Farbdaten im Objekt auf den angegebenen MIME-Typ „ 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 dem durch mimeType angegebenen MIME-Typ zugeordnet sind, auf den angegebenen Wert data.
Für die gängigsten Datentypen können Sie stattdessen die übergeordneten Funktionen ` setText()`, ` setHtml()`, ` setUrls()`, ` setImageData()` und ` setColorData()` aufrufen.
meta typeBeachten Sie, dass Sie, wenn Sie einen benutzerdefinierten Datentyp in einer Drag-and-Drop-Operation der Elementansicht verwenden möchten, diesen mithilfe des Makros „ Q_DECLARE_METATYPE()“ als Qt XML-ph-0000@deepl.internal registrieren und Stream-Operatoren dafür implementieren müssen.
Siehe auch „ data()“, „ hasFormat()“, „ QMetaType “ und „ Q_DECLARE_METATYPE()“.
void QMimeData::setHtml(const QString &html)
Legt „ html “ als HTML (MIME-Typ „ text/html “) fest, das zur Darstellung der Daten verwendet wird.
Siehe auch html(), hasHtml(), setText() und setData().
void QMimeData::setImageData(const QVariant &image)
Setzt die Daten im Objekt auf die angegebene Adresse image.
Es wird ein ` QVariant ` verwendet, da ` QMimeData ` zum Modul ` Qt Core ` gehört, während ` QImage ` zum Modul ` Qt GUI` gehört. Die Konvertierung von ` QImage ` zu ` QVariant ` erfolgt implizit. Beispiel:
mimeData->setImageData(QImage("beautifulfjord.png"));Siehe auch imageData(), hasImage() und setData().
void QMimeData::setText(const QString &text)
Legt „ text “ als Klartext (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 unter urls angegebenen.
Die URLs entsprechen dem MIME-Typ text/uri-list.
Seit Qt 5.0 exportiert `setUrls` die URLs auch als Klartext, falls ` setText ` zuvor nicht aufgerufen wurde, damit sie in beliebige `LineEdit`- und Texteditor-Felder eingefügt werden können.
Siehe auch ` urls()`, ` hasUrls()` und ` setData()`.
QString QMimeData::text() const
Gibt die Klartextdarstellung (MIME-Typ text/plain) der Daten zurück, sofern dieses Objekt Klartext enthält. Enthält es andere Inhalte, versucht diese Funktion nach bestem Bemühen, diese 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 “.
© 2026 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.