En esta página

QWindowsMimeConverter Class

La clase QWindowsMimeConverter mapea formatos MIME open-standard a formatos Window Clipboard. Más...

Cabecera: #include <QWindowsMimeConverter>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui

Funciones Públicas

QWindowsMimeConverter()
virtual ~QWindowsMimeConverter()
virtual bool canConvertFromMime(const FORMATETC &formatetc, const QMimeData *mimeData) const = 0
virtual bool canConvertToMime(const QString &mimeType, IDataObject *pDataObj) const = 0
virtual bool convertFromMime(const FORMATETC &formatetc, const QMimeData *mimeData, STGMEDIUM *pmedium) const = 0
virtual QVariant convertToMime(const QString &mimeType, IDataObject *pDataObj, QMetaType preferredType) const = 0
virtual QList<FORMATETC> formatsForMime(const QString &mimeType, const QMimeData *mimeData) const = 0
virtual QString mimeForFormat(const FORMATETC &formatetc) const = 0

Miembros públicos estáticos

int registerMimeType(const QString &mimeType)

Descripción detallada

Las funciones de arrastrar y soltar y del portapapeles de Qt utilizan el estándar MIME. En X11, esto se corresponde trivialmente con el protocolo Xdnd, pero en Windows aunque algunas aplicaciones usan tipos MIME para describir los formatos del portapapeles, otras usan convenciones de nomenclatura arbitrarias no estandarizadas, o formatos incorporados sin nombre de Windows.

Instanciando subclases de QWindowsMimeConverter que proporcionen conversiones entre el Portapapeles de Windows y los formatos MIME, puedes convertir formatos propietarios del portapapeles a formatos MIME.

Construya una instancia de su implementación de conversor después de instanciar QGuiApplication:

int main(int argc, char **argv)
{
    QGuiApplication app(argc, argv);
    JsonMimeConverter jsonConverter;
}

Destruir la instancia anulará el registro del conversor y eliminará el soporte para la conversión. También es válido heap-allocate la instancia del convertidor; Qt toma la propiedad y eliminará el objeto convertidor durante QGuiApplication shut-down.

Qt tiene soporte predefinido para los siguientes formatos de Portapapeles de Windows:

Formato WindowsTipo MIME equivalente
CF_UNICODETEXTtext/plain
CF_TEXTtext/plain
CF_DIBimage/xyzdonde xyz es un Qt image format
CF_HDROPtext/uri-list
CF_INETURLtext/uri-list
CF_HTMLtext/html

Un ejemplo de uso de esta clase sería mapear el formato de portapapeles Metafile de Windows (CF_METAFILEPICT) desde y hacia el tipo MIME image/x-wmf. Esta conversión podría consistir simplemente en añadir o eliminar una cabecera, o incluso simplemente pasar los datos. Consulte Arrastrar y soltar para obtener más información sobre la elección y definición de tipos MIME.

Puede comprobar si un tipo MIME es convertible utilizando canConvertFromMime() y puede realizar conversiones con convertToMime() y convertFromMime().

Documentación de las funciones miembro

QWindowsMimeConverter::QWindowsMimeConverter()

Construye una instancia de QWindowsMimeConverter.

La instancia se registra automáticamente, y será llamada para convertir datos durante operaciones de clipboard o drag'n'drop.

Llama a este constructor después de que QGuiApplication haya sido creado.

[virtual noexcept] QWindowsMimeConverter::~QWindowsMimeConverter()

Crea una instancia de QWindowsMimeConverter.

La instancia se desregistra automáticamente.

[pure virtual] bool QWindowsMimeConverter::canConvertFromMime(const FORMATETC &formatetc, const QMimeData *mimeData) const

Devuelve true si el conversor puede convertir del formato mimeData al formato especificado en formatetc.

Todas las subclases deben reimplementar esta función virtual pura.

[pure virtual] bool QWindowsMimeConverter::canConvertToMime(const QString &mimeType, IDataObject *pDataObj) const

Devuelve true si el conversor puede convertir al formato mimeType desde los formatos disponibles en pDataObj.

Todas las subclases deben reimplementar esta función virtual pura.

[pure virtual] bool QWindowsMimeConverter::convertFromMime(const FORMATETC &formatetc, const QMimeData *mimeData, STGMEDIUM *pmedium) const

Convierta mimeData al formato especificado en formatetc. Los datos convertidos deben colocarse en la estructura pmedium.

Devuelve true si la conversión se ha realizado correctamente.

Todas las subclases deben reimplementar esta función virtual pura.

[pure virtual] QVariant QWindowsMimeConverter::convertToMime(const QString &mimeType, IDataObject *pDataObj, QMetaType preferredType) const

Devuelve un QVariant que contiene los datos convertidos para mimeType desde pDataObj. Si es posible, el QVariant debe ser del preferredType para evitar conversiones innecesarias.

Todas las subclases deben reimplementar esta función virtual pura.

[pure virtual] QList<FORMATETC> QWindowsMimeConverter::formatsForMime(const QString &mimeType, const QMimeData *mimeData) const

Devuelve un QList de estructuras FORMATETC que representan los diferentes formatos de portapapeles de windows que se pueden proporcionar para el mimeType desde el mimeData.

Todas las subclases deben reimplementar esta función virtual pura.

[pure virtual] QString QWindowsMimeConverter::mimeForFormat(const FORMATETC &formatetc) const

Devuelve el tipo mime que se creará a partir del formato especificado en formatetc, o una cadena vacía si este conversor no admite formatetc.

Todas las subclases deben reimplementar esta función virtual pura.

[static] int QWindowsMimeConverter::registerMimeType(const QString &mimeType)

Registra el tipo MIME mimeType, y devuelve un número ID que identifica el formato en Windows.

Se registrará un tipo MIME application/x-qt-windows-mime;value="WindowsType" como formato de portapapeles para WindowsType.

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