QMimeData Class
La clase QMimeData proporciona un contenedor para datos que registra información sobre su tipo MIME. Más...
| Cabecera: | #include <QMimeData> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| Hereda: | QObject |
Funciones Públicas
| 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 |
Funciones protegidas
| virtual QVariant | retrieveData(const QString &mimeType, QMetaType type) const |
Descripción detallada
QMimeData se utiliza para describir información que puede almacenarse en clipboard, y transferirse mediante el mecanismo de arrastrar y soltar. Los objetos QMimeData asocian los datos que contienen con los tipos MIME correspondientes para garantizar que la información pueda transferirse de forma segura entre aplicaciones y copiarse dentro de la misma aplicación.
Los objetos QMimeData se crean normalmente usando new y se suministran a los objetos QDrag o QClipboard. Esto es para permitir a Qt gestionar la memoria que utilizan.
Un único objeto QMimeData puede almacenar los mismos datos utilizando varios formatos diferentes al mismo tiempo. La función formats() devuelve una lista de los formatos disponibles por orden de preferencia. La función data() devuelve los datos brutos asociados a un tipo MIME, y setData() permite establecer los datos de un tipo MIME.
Para los tipos MIME más comunes, QMimeData proporciona funciones de conveniencia para acceder a los datos:
| Comprobador | Obtenedor | Setter | Tipos 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 |
Por ejemplo, si escribes un widget que acepte arrastres de URL, acabarías escribiendo código como este:
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()) { //... } } }
Existen tres métodos para almacenar datos personalizados en un objeto QMimeData:
- Los datos personalizados pueden almacenarse directamente en un objeto QMimeData como QByteArray utilizando setData(). Por ejemplo:
QByteArray csvData = something; QMimeData *mimeData = new QMimeData; mimeData->setData("text/csv", csvData);
- Podemos subclasificar QMimeData y reimplementar hasFormat(), formats(), y retrieveData().
- Si la operación de arrastrar y soltar se produce dentro de una única aplicación, podemos subclasificar QMimeData y añadir datos adicionales en ella, y utilizar un qobject_cast() en el manejador de eventos de soltar del receptor. Por ejemplo:
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) } }
Tipos MIME específicos de plataforma
En Windows, formats() también devolverá formatos personalizados disponibles en los datos MIME, utilizando el subtipo x-qt-windows-mime para indicar que representan datos en formatos no estándar. Los formatos tendrán la siguiente forma:
application/x-qt-windows-mime;value="<custom type>"
Los siguientes son ejemplos de tipos MIME personalizados:
application/x-qt-windows-mime;value="FileGroupDescriptor" application/x-qt-windows-mime;value="FileContents"
La declaración value de cada formato describe la forma en que se codifican los datos.
En algunos casos (por ejemplo, al enviar varios archivos adjuntos por correo electrónico), se dispone de varios valores de datos. Se puede acceder a ellos añadiendo un valor index:
application/x-qt-windows-mime;value="FileContents";index=0 application/x-qt-windows-mime;value="FileContents";index=1
En Windows, el formato MIME no siempre se asigna directamente a los formatos del portapapeles. Qt proporciona QWindowsMimeConverter para asignar formatos del portapapeles a formatos MIME de estándar abierto. Del mismo modo, QUtiMimeConverter asigna MIME a identificadores de tipo uniforme en macOS e iOS.
Véase también QClipboard, QDragEnterEvent, QDragMoveEvent, QDropEvent, QDrag, y Drag and Drop.
Documentación de las funciones miembro
QMimeData::QMimeData()
Construye un nuevo objeto de datos MIME sin datos.
[virtual noexcept] QMimeData::~QMimeData()
Destruye el objeto de datos MIME.
void QMimeData::clear()
Elimina todas las entradas de tipo y datos MIME del objeto.
QVariant QMimeData::colorData() const
Devuelve un color si los datos almacenados en el objeto representan un color (tipo MIME application/x-color); en caso contrario devuelve una variante nula.
Se utiliza QVariant porque QMimeData pertenece al módulo Qt Core, mientras que QColor pertenece a Qt GUI. Para convertir QVariant en QColor, basta con utilizar qvariant_cast(). Por ejemplo:
if (event->mimeData()->hasColor()) { QColor color = qvariant_cast<QColor>(event->mimeData()->colorData()); //... }
Véase también hasColor(), setColorData() y data().
QByteArray QMimeData::data(const QString &mimeType) const
Devuelve los datos almacenados en el objeto en el formato descrito por el tipo MIME especificado por mimeType. Si este objeto no contiene datos para el tipo MIME mimeType (véase hasFormat()), esta función puede realizar una conversión de mejor esfuerzo al mismo.
Véase también hasFormat() y setData().
[virtual] QStringList QMimeData::formats() const
Devuelve una lista de formatos soportados por el objeto. Se trata de una lista de tipos MIME para los que el objeto puede devolver datos adecuados. Los formatos de la lista están en orden de prioridad.
Para los tipos de datos más comunes, puede llamar en su lugar a las funciones de nivel superior hasText(), hasHtml(), hasUrls(), hasImage() y hasColor().
Véase también hasFormat(), setData() y data().
bool QMimeData::hasColor() const
Devuelve true si el objeto puede devolver un color (tipo MIME application/x-color); en caso contrario devuelve false.
Véase también setColorData(), colorData(), y hasFormat().
[virtual] bool QMimeData::hasFormat(const QString &mimeType) const
Devuelve true si el objeto puede devolver datos para el tipo MIME especificado por mimeType; en caso contrario devuelve false.
Para los tipos de datos más comunes, puede llamar en su lugar a las funciones de nivel superior hasText(), hasHtml(), hasUrls(), hasImage() y hasColor().
Véase también formats(), setData() y data().
bool QMimeData::hasHtml() const
Devuelve true si el objeto puede devolver HTML (tipo MIME text/html); en caso contrario devuelve false.
Véase también setHtml(), html(), y hasFormat().
bool QMimeData::hasImage() const
Devuelve true si el objeto puede devolver una imagen; en caso contrario devuelve false.
Véase también setImageData(), imageData() y hasFormat().
bool QMimeData::hasText() const
Devuelve true si el objeto puede devolver texto sin formato (tipo MIME text/plain); en caso contrario devuelve false.
Véase también setText(), text(), hasHtml() y hasFormat().
bool QMimeData::hasUrls() const
Devuelve true si el objeto puede devolver una lista de urls; en caso contrario devuelve false.
Las URL corresponden al tipo MIME text/uri-list.
Véase también setUrls(), urls() y hasFormat().
QString QMimeData::html() const
Devuelve una cadena si los datos almacenados en el objeto son HTML (tipo MIME text/html); en caso contrario devuelve una cadena vacía.
Véase también setHtml(), hasHtml() y setData().
QVariant QMimeData::imageData() const
Devuelve un QVariant almacenando un QImage si el objeto puede devolver una imagen; en caso contrario devuelve una variante nula.
Se utiliza QVariant porque QMimeData pertenece al módulo Qt Core, mientras que QImage pertenece a Qt GUI. Para convertir QVariant en QImage, basta con utilizar qvariant_cast(). Por ejemplo:
if (event->mimeData()->hasImage()) { QImage image = qvariant_cast<QImage>(event->mimeData()->imageData()); //... }
Véase también setImageData() y hasImage().
void QMimeData::removeFormat(const QString &mimeType)
Elimina la entrada de datos para mimeType en el objeto.
[virtual protected] QVariant QMimeData::retrieveData(const QString &mimeType, QMetaType type) const
Devuelve una variante con el type dado que contiene datos para el tipo MIME especificado por mimeType. Si el objeto no soporta el tipo MIME o el tipo de variante dado, se devuelve una variante nula.
Esta función es llamada por el getter general data() y por los getters de conveniencia (text(), html(), urls(), imageData(), y colorData()). Puede reimplementarlo si desea almacenar sus datos utilizando una estructura de datos personalizada (en lugar de QByteArray, que es lo que proporciona setData()). En ese caso, también deberá reimplementar hasFormat() y formats().
Véase también data().
void QMimeData::setColorData(const QVariant &color)
Establece los datos de color del objeto en la dirección color.
Los colores corresponden al tipo MIME application/x-color.
Véase también colorData(), hasColor() y setData().
void QMimeData::setData(const QString &mimeType, const QByteArray &data)
Establece los datos asociados con el tipo MIME dado por mimeType en el data especificado.
Para los tipos de datos más comunes, puede llamar en su lugar a las funciones de nivel superior setText(), setHtml(), setUrls(), setImageData() y setColorData().
Tenga en cuenta que si desea utilizar un tipo de datos personalizado en una operación de arrastrar y soltar de la vista de elementos, debe registrarlo como un Qt meta type, utilizando la macro Q_DECLARE_METATYPE(), e implementar operadores de flujo para él.
Véase también data(), hasFormat(), QMetaType, y Q_DECLARE_METATYPE().
void QMimeData::setHtml(const QString &html)
Establece html como el HTML (tipo MIME text/html) utilizado para representar los datos.
Véase también html(), hasHtml(), setText() y setData().
void QMimeData::setImageData(const QVariant &image)
Establece los datos del objeto en image.
Se utiliza QVariant porque QMimeData pertenece al módulo Qt Core, mientras que QImage pertenece a Qt GUI. La conversión de QImage a QVariant es implícita. Por ejemplo:
mimeData->setImageData(QImage("beautifulfjord.png"));
Véase también imageData(), hasImage() y setData().
void QMimeData::setText(const QString &text)
Establece text como el texto sin formato (tipo MIME text/plain) utilizado para representar los datos.
Véase también text(), hasText(), setHtml() y setData().
void QMimeData::setUrls(const QList<QUrl> &urls)
Establece las URL almacenadas en el objeto de datos MIME a las especificadas por urls.
Las URL corresponden al tipo MIME text/uri-list.
Desde Qt 5.0, setUrls también exporta las urls como texto plano, si setText no fue llamado antes, para hacer posible soltarlas en cualquier editor de texto y lineedit.
Véase también urls(), hasUrls(), y setData().
QString QMimeData::text() const
Devuelve la representación en texto plano (tipo MIME text/plain) de los datos si este objeto contiene texto plano. Si contiene algún otro contenido, esta función hace un esfuerzo para convertirlo a texto plano.
Véase también setText(), hasText(), html() y data().
QList<QUrl> QMimeData::urls() const
Devuelve una lista de URLs contenidas en el objeto de datos MIME.
Las URL corresponden al tipo 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.