Sur cette page

QMimeData Class

La classe QMimeData fournit un conteneur de données qui enregistre des informations sur son type MIME. En savoir plus...

En-tête : #include <QMimeData>
CMake : find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake : QT += core
Hérite de : QObject

Fonctions publiques

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

Fonctions protégées

virtual QVariant retrieveData(const QString &mimeType, QMetaType type) const

Description détaillée

QMimeData sert à décrire les informations pouvant être stockées dans l’ clipboard, puis transférées via le mécanisme de glisser-déposer. Les objets QMimeData associent les données qu’ils contiennent aux types MIME correspondants afin de garantir que les informations puissent être transférées en toute sécurité entre les applications et copiées au sein d’une même application.

Les objets QMimeData sont généralement créés à l'aide de la fonction ` new ` et fournis à des objets ` QDrag ` ou ` QClipboard `. Cela permet à Qt de gérer la mémoire qu’ils utilisent.

Un seul objet `QMimeData` peut stocker les mêmes données en utilisant plusieurs formats différents simultanément. La fonction ` formats()` renvoie une liste des formats disponibles par ordre de préférence. La fonction ` data()` renvoie les données brutes associées à un type MIME, et ` setData()` permet de définir les données pour un type MIME.

Pour les types MIME les plus courants, QMimeData fournit des fonctions pratiques permettant d’accéder aux données :

TesteurGetterSetterTypes MIME
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

Par exemple, si vous écrivez un widget qui accepte les glissements d'URL, vous finirez par écrire du code comme celui-ci :

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()) {
            //...
        }
    }
}

Il existe trois approches pour stocker des données personnalisées dans un objet QMimeData :

  1. Les données personnalisées peuvent être stockées directement dans un objet `QMimeData` sous forme de ` QByteArray ` à l’aide de la méthode ` setData()`. Par exemple :
    QByteArray csvData = something;
    
    QMimeData *mimeData = new QMimeData;
    mimeData->setData("text/csv", csvData);
  2. On peut créer une sous-classe de QMimeData et réimplémenter les méthodes ` hasFormat()`, ` formats()` et ` retrieveData()`.
  3. Si l'opération de glisser-déposer s'effectue au sein d'une même application, nous pouvons créer une sous-classe de `QMimeData`, y ajouter des données supplémentaires et utiliser une méthode ` qobject_cast()` dans le gestionnaire d'événement `drop` du récepteur. Par exemple :
    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)
        }
    }

Types MIME spécifiques à la plateforme

Sous Windows, la fonction ` formats()` renvoie également les formats personnalisés disponibles dans les données MIME, en utilisant le sous-type ` x-qt-windows-mime ` pour indiquer qu’ils représentent des données dans des formats non standard. Ces formats prendront la forme suivante :

application/x-qt-windows-mime;value="<custom type>"

Voici quelques exemples de types MIME personnalisés :

application/x-qt-windows-mime;value="FileGroupDescriptor"
application/x-qt-windows-mime;value="FileContents"

La déclaration ` value ` de chaque format décrit la manière dont les données sont encodées.

Dans certains cas (par exemple, lors du glissement de plusieurs pièces jointes d’e-mail), plusieurs valeurs de données sont disponibles. On peut y accéder en ajoutant une valeur « index » :

application/x-qt-windows-mime;value="FileContents";index=0
application/x-qt-windows-mime;value="FileContents";index=1

Sous Windows, le format MIME ne correspond pas toujours directement aux formats du presse-papiers. Qt fournit des QWindowsMimeConverter permettant de mapper les formats du presse-papiers vers des formats MIME ouverts et standardisés. De même, l’ QUtiMimeConverter mappe les formats MIME vers des identifiants de type uniformes (UTI) sur macOS et iOS.

Voir également QClipboard, QDragEnterEvent, QDragMoveEvent, QDropEvent, QDrag et Glisser-déposer.

Documentation sur les fonctions membres

QMimeData::QMimeData()

Crée un nouvel objet de données MIME ne contenant aucune donnée.

[virtual noexcept] QMimeData::~QMimeData()

Supprime l'objet de données MIME.

void QMimeData::clear()

Supprime toutes les entrées relatives au type MIME et aux données contenues dans l'objet.

QVariant QMimeData::colorData() const

Renvoie une couleur si les données stockées dans l'objet représentent une couleur (type MIME application/x-color) ; sinon, renvoie une variante nulle.

On utilise QVariant car QMimeData appartient au module Qt Core, tandis que QColor appartient à Qt GUI. Pour convertir le QVariant en QColor, il suffit d’utiliser qvariant_cast(). Par exemple :

if (event->mimeData()->hasColor()) {
    QColor color = qvariant_cast<QColor>(event->mimeData()->colorData());
    //...
}

Voir également hasColor(), setColorData() et data().

QByteArray QMimeData::data(const QString &mimeType) const

Renvoie les données stockées dans l'objet au format décrit par le type MIME spécifié par mimeType. Si cet objet ne contient pas de données pour le type MIME mimeType (voir hasFormat()), cette fonction peut effectuer une conversion « au mieux » vers ce format.

Voir également hasFormat() et setData().

[virtual] QStringList QMimeData::formats() const

Renvoie une liste des formats pris en charge par l'objet. Il s'agit d'une liste des types MIME pour lesquels l'objet peut renvoyer des données adaptées. Les formats de la liste sont classés par ordre de priorité.

Pour les types de données les plus courants, vous pouvez plutôt appeler les fonctions de niveau supérieur hasText(), hasHtml(), hasUrls(), hasImage() et hasColor().

Voir également hasFormat(), setData() et data().

bool QMimeData::hasColor() const

Renvoie ` true ` si l'objet peut renvoyer une couleur (type MIME ` application/x-color`) ; sinon, renvoie ` false`.

Voir également setColorData(), colorData() et hasFormat().

[virtual] bool QMimeData::hasFormat(const QString &mimeType) const

Renvoie true si l’objet peut renvoyer des données pour le type MIME spécifié par mimeType; sinon, renvoie false.

Pour les types de données les plus courants, vous pouvez plutôt appeler les fonctions de niveau supérieur hasText(), hasHtml(), hasUrls(), hasImage() et hasColor().

Voir également formats(), setData() et data().

bool QMimeData::hasHtml() const

Renvoie « true » si l'objet peut renvoyer du code HTML (type MIME text/html) ; sinon, renvoie « false ».

Voir également setHtml(), html() et hasFormat().

bool QMimeData::hasImage() const

Renvoie « true » si l'objet peut renvoyer une image ; sinon, renvoie « false ».

Voir également setImageData(), imageData() et hasFormat().

bool QMimeData::hasText() const

Renvoie « true » si l'objet peut renvoyer du texte brut (type MIME « text/plain ») ; sinon, renvoie « false ».

Voir également setText(), text(), hasHtml() et hasFormat().

bool QMimeData::hasUrls() const

Renvoie true si l'objet peut renvoyer une liste d'URL ; sinon, renvoie false.

Les URL correspondent au type MIME text/uri-list.

Voir également setUrls(), urls() et hasFormat().

QString QMimeData::html() const

Renvoie une chaîne si les données stockées dans l'objet sont au format HTML (type MIME text/html) ; sinon, renvoie une chaîne vide.

Voir également setHtml(), hasHtml() et setData().

QVariant QMimeData::imageData() const

Renvoie une variante « QVariant » contenant une variante « QImage » si l'objet peut renvoyer une image ; sinon, renvoie une variante nulle.

On utilise une variable de type ` QVariant ` car ` QMimeData ` appartient au module ` Qt Core `, tandis que ` QImage ` appartient à ` Qt GUI`. Pour convertir la variable ` QVariant ` en ` QImage`, il suffit d'utiliser ` qvariant_cast()`. Par exemple :

if (event->mimeData()->hasImage()) {
    QImage image = qvariant_cast<QImage>(event->mimeData()->imageData());
    //...
}

Voir également setImageData() et hasImage().

void QMimeData::removeFormat(const QString &mimeType)

Supprime l'entrée de données correspondant à « mimeType » dans l'objet.

[virtual protected] QVariant QMimeData::retrieveData(const QString &mimeType, QMetaType type) const

Renvoie une variante avec l'type on fournie, contenant les données correspondant au type MIME spécifié par mimeType. Si l'objet ne prend pas en charge le type MIME ou le type de variante indiqué, une variante nulle est renvoyée à la place.

Cette fonction est appelée par le getter général ` data()` et par les getters de commodité (`text()`, ` html()`, ` urls()`, ` imageData()` et ` colorData()`). Vous pouvez la réimplémenter si vous souhaitez stocker vos données à l’aide d’une structure de données personnalisée (au lieu d’un ` QByteArray`, qui est ce que fournit ` setData()`). Vous devrez alors également réimplémenter hasFormat() et formats().

Voir également data().

void QMimeData::setColorData(const QVariant &color)

Définit les données de couleur de l'objet selon la valeur indiquée color.

Les couleurs correspondent au type MIME application/x-color.

Voir également colorData(), hasColor() et setData().

void QMimeData::setData(const QString &mimeType, const QByteArray &data)

Attribue à l'data spécifiée les données associées au type MIME indiqué par mimeType.

Pour les types de données les plus courants, vous pouvez plutôt appeler les fonctions de niveau supérieur setText(), setHtml(), setUrls(), setImageData() et setColorData().

meta typeNotez que si vous souhaitez utiliser un type de données personnalisé dans une opération de glisser-déposer de la vue des éléments, vous devez l'enregistrer en tant que `Qt XML-ph-0000@deepl.internal`, à l'aide de la macro ` Q_DECLARE_METATYPE()`, et implémenter des opérateurs de flux pour celui-ci.

Voir également data(), hasFormat(), QMetaType et Q_DECLARE_METATYPE().

void QMimeData::setHtml(const QString &html)

Définit html comme format HTML (type MIME text/html) utilisé pour représenter les données.

Voir également html(), hasHtml(), setText() et setData().

void QMimeData::setImageData(const QVariant &image)

Définit les données de l'objet sur l'image spécifiée.

On utilise une QVariant car QMimeData appartient au module Qt Core, tandis que QImage appartient à Qt GUI. La conversion de QImage vers QVariant est implicite. Par exemple :

mimeData->setImageData(QImage("beautifulfjord.png"));

Voir également imageData(), hasImage() et setData().

void QMimeData::setText(const QString &text)

Définit « text » comme texte brut (type MIME : text/plain) utilisé pour représenter les données.

Voir également text(), hasText(), setHtml() et setData().

void QMimeData::setUrls(const QList<QUrl> &urls)

Définit les URL stockées dans l'objet de données MIME sur celles spécifiées par urls.

Les URL correspondent au type MIME text/uri-list.

Depuis Qt 5.0, la fonction `setUrls` exporte également les URL sous forme de texte brut, si la fonction ` setText ` n'a pas été appelée auparavant, afin de permettre de les insérer dans n'importe quel champ de saisie de texte ou éditeur de texte.

Voir également urls(), hasUrls() et setData().

QString QMimeData::text() const

Renvoie la représentation en texte brut (type MIME text/plain) des données si cet objet contient du texte brut. S'il contient un autre type de contenu, cette fonction s'efforce de le convertir en texte brut dans la mesure du possible.

Voir également setText(), hasText(), html() et data().

QList<QUrl> QMimeData::urls() const

Renvoie une liste des URL contenues dans l'objet de données MIME.

Les URL correspondent au type MIME text/uri-list.

Voir également setUrls(), hasUrls() et 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.