QMimeData Class
La classe QMimeData fournit un conteneur pour les données qui enregistrent des informations sur leur type MIME. Plus d'informations...
| En-tête : | #include <QMimeData> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake : | QT += core |
| Héritages : | 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 est utilisé pour décrire les informations qui peuvent être stockées dans le site clipboard et transférées par 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 peuvent ê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 new et fournis aux 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 en même temps. 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() vous permet de définir les données d'un type MIME.
Pour les types MIME les plus courants, QMimeData fournit des fonctions de commodité pour accéder aux données :
| Tester | Obtenir | Setter | Types 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 un 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 :
- Les données personnalisées peuvent être stockées directement dans un objet QMimeData en tant que QByteArray à l'aide de setData(). Par exemple :
QByteArray csvData = something; QMimeData *mimeData = new QMimeData; mimeData->setData("text/csv", csvData);
- Nous pouvons sous-classer QMimeData et réimplémenter hasFormat(), formats() et retrieveData().
- Si l'opération de glisser-déposer a lieu dans une seule application, nous pouvons sous-classer QMimeData et y ajouter des données supplémentaires, et utiliser qobject_cast() dans le gestionnaire d'événement de dépôt du destinataire. 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 à une plate-forme
Sous Windows, formats() renverra é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. Les formats prendront la forme suivante :
application/x-qt-windows-mime;value="<custom type>"
Voici des 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 codées.
Dans certains cas (par exemple, le dépôt de plusieurs pièces jointes), plusieurs valeurs de données sont disponibles. Il est possible d'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 QWindowsMimeConverter pour faire correspondre les formats du presse-papiers aux formats MIME ouverts. De même, le site QUtiMimeConverter établit une correspondance entre le format MIME et les identificateurs de type uniforme sur macOS et iOS.
Voir aussi QClipboard, QDragEnterEvent, QDragMoveEvent, QDropEvent, QDrag, et Drag and Drop.
Documentation des fonctions membres
QMimeData::QMimeData()
Construit un nouvel objet de données MIME ne contenant aucune donnée.
[virtual noexcept] QMimeData::~QMimeData()
Détruit l'objet de données MIME.
void QMimeData::clear()
Supprime toutes les entrées de type MIME et de données de 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.
Un QVariant est utilisé parce que 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 aussi hasColor(), setColorData() et data().
QByteArray QMimeData::data(const QString &mimeType) const
Renvoie les données stockées dans l'objet dans le 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.
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 de types MIME pour lesquels l'objet peut renvoyer des données appropriées. Les formats de la liste sont classés par ordre de priorité.
Pour les types de données les plus courants, vous pouvez appeler les fonctions de niveau supérieur hasText(), hasHtml(), hasUrls(), hasImage() et hasColor() à la place.
Voir aussi 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 aussi 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 appeler les fonctions de niveau supérieur hasText(), hasHtml(), hasUrls(), hasImage() et hasColor() à la place.
Voir aussi formats(), setData() et data().
bool QMimeData::hasHtml() const
Renvoie true si l'objet peut renvoyer du HTML (type MIME text/html) ; sinon, il renvoie false.
Voir aussi setHtml(), html() et hasFormat().
bool QMimeData::hasImage() const
Renvoie true si l'objet peut renvoyer une image ; sinon, renvoie false.
Voir aussi setImageData(), imageData() et hasFormat().
bool QMimeData::hasText() const
Renvoie true si l'objet peut renvoyer du texte brut (type MIME text/plain) ; sinon, il renvoie false.
Voir aussi setText(), text(), hasHtml() et hasFormat().
bool QMimeData::hasUrls() const
Renvoie true si l'objet peut renvoyer une liste d'URL ; sinon, il renvoie false.
Les URL correspondent au type MIME text/uri-list.
Voir aussi setUrls(), urls() et hasFormat().
QString QMimeData::html() const
Renvoie une chaîne si les données stockées dans l'objet sont de type HTML (type MIME text/html) ; sinon, renvoie une chaîne vide.
Voir aussi setHtml(), hasHtml() et setData().
QVariant QMimeData::imageData() const
Renvoie un QVariant stockant un QImage si l'objet peut renvoyer une image ; sinon, renvoie une variante nulle.
Un QVariant est utilisé parce que QMimeData appartient au module Qt Core, tandis que QImage appartient à Qt GUI. Pour convertir le QVariant en QImage, il suffit d'utiliser qvariant_cast(). Par exemple :
if (event->mimeData()->hasImage()) { QImage image = qvariant_cast<QImage>(event->mimeData()->imageData()); //... }
Voir aussi setImageData() et hasImage().
void QMimeData::removeFormat(const QString &mimeType)
Supprime la saisie de données pour mimeType dans l'objet.
[virtual protected] QVariant QMimeData::retrieveData(const QString &mimeType, QMetaType type) const
Renvoie une variante avec l'adresse type donnée, contenant des données pour le type MIME spécifié par mimeType. Si l'objet ne supporte pas 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'une structure QByteArray, ce que fournit setData()). Vous devrez alors également réimplémenter hasFormat() et formats().
Voir aussi data().
void QMimeData::setColorData(const QVariant &color)
Fixe les données de couleur de l'objet à la valeur donnée color.
Les couleurs correspondent au type MIME application/x-color.
Voir aussi colorData(), hasColor() et setData().
void QMimeData::setData(const QString &mimeType, const QByteArray &data)
Définit les données associées au type MIME indiqué par mimeType dans le type data spécifié.
Pour les types de données les plus courants, vous pouvez appeler les fonctions de niveau supérieur setText(), setHtml(), setUrls(), setImageData() et setColorData().
Notez que si vous souhaitez utiliser un type de données personnalisé dans une opération de glisser-déposer d'une vue d'élément, vous devez l'enregistrer en tant que meta type, à l'aide de la macro Q_DECLARE_METATYPE(), et mettre en œuvre des opérateurs de flux pour ce type de données.
Voir aussi data(), hasFormat(), QMetaType et Q_DECLARE_METATYPE().
void QMimeData::setHtml(const QString &html)
Définit html comme le code HTML (type MIME text/html) utilisé pour représenter les données.
Voir aussi html(), hasHtml(), setText() et setData().
void QMimeData::setImageData(const QVariant &image)
Définit les données de l'objet à l'adresse image.
Un QVariant est utilisé parce que QMimeData appartient au module Qt Core, tandis que QImage appartient à Qt GUI. La conversion de QImage à QVariant est implicite. Par exemple, la conversion de en est implicite :
mimeData->setImageData(QImage("beautifulfjord.png"));
Voir aussi imageData(), hasImage() et setData().
void QMimeData::setText(const QString &text)
Définit text comme le texte brut (type MIME text/plain) utilisé pour représenter les données.
Voir aussi text(), hasText(), setHtml() et setData().
void QMimeData::setUrls(const QList<QUrl> &urls)
Définit les URL stockés dans l'objet de données MIME comme étant ceux spécifiés par urls.
Les URL correspondent au type MIME text/uri-list.
Depuis Qt 5.0, setUrls exporte également les urls en texte brut, si setText n'a pas été appelé auparavant, pour permettre de les déposer dans n'importe quel éditeur de ligne et de texte.
Voir aussi 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 contenu, cette fonction s'efforce de le convertir en texte brut.
Voir aussi setText(), hasText(), html() et data().
QList<QUrl> QMimeData::urls() const
Renvoie une liste d'URL contenus dans l'objet de données MIME.
Les URL correspondent au type MIME 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.