Auf dieser Seite

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:

TesterGetterSetterMIME-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:

  1. 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);
  2. Wir können eine Unterklasse von `QMimeData` erstellen und die Methoden ` hasFormat()`, ` formats()` sowie ` retrieveData()` neu implementieren.
  3. 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=1

Unter 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 “.

Siehe auch setUrls(), hasUrls() und data().

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