QWindowsMimeConverter Class
QWindowsMimeConverter 类可将开放标准 MIME 格式映射为窗口剪贴板格式。更多
Header: | #include <QWindowsMimeConverter> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
公共函数
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 |
静态公共成员
int | registerMimeType(const QString &mimeType) |
详细说明
Qt 的拖放和剪贴板功能使用 MIME 标准。在 X11 上,这与 Xdnd 协议的映射是微不足道的,但在 Windows 上,虽然一些应用程序使用 MIME 类型来描述剪贴板格式,但其他应用程序则使用任意的非标准化命名约定或 Windows 未命名的内置格式。
通过实例化在 Windows 剪贴板和 MIME 格式之间提供转换的 QWindowsMimeConverter 子类,您可以将专有剪贴板格式转换为 MIME 格式。
在实例化QGuiApplication 后,构建一个转换器实现的实例:
int main(int argc, char **argv) { QGuiApplication app(argc, argv); JsonMimeConverter jsonConverter; }
销毁实例将取消注册转换器并移除对转换的支持。堆分配转换器实例也是有效的;Qt 拥有所有权,并将在QGuiApplication 关闭时删除转换器对象。
Qt 预定义支持以下 Windows 剪贴板格式:
Windows 格式 | 等效 MIME 类型 |
---|---|
CF_UNICODETEXT | text/plain |
CF_TEXT | text/plain |
CF_DIB | image/xyz ,其中xyz 是一个Qt image format |
CF_HDROP | text/uri-list |
CF_INETURL | text/uri-list |
CF_HTML | text/html |
该类的一个使用示例是将 Windows Metafile 剪贴板格式 (CF_METAFILEPICT
) 与 MIME 类型image/x-wmf
进行映射。这种转换可以是简单地添加或删除标题,甚至只是传递数据。有关选择和定义 MIME 类型的更多信息,请参阅 "拖放"。
您可以使用canConvertFromMime() 检查 MIME 类型是否可转换,也可以使用convertToMime() 和convertFromMime() 执行转换。
成员函数文档
QWindowsMimeConverter::QWindowsMimeConverter()
构造一个 QWindowsMimeConverter 实例。
该实例将自动注册,并在剪贴板或拖放操作中被调用来转换数据。
请在创建QGuiApplication 后调用此构造函数。
[virtual noexcept]
QWindowsMimeConverter::~QWindowsMimeConverter()
构造一个QWindowsMimeConverter 实例。
该实例将自动取消注册。
[pure virtual]
bool QWindowsMimeConverter::canConvertFromMime(const FORMATETC &formatetc, const QMimeData *mimeData) const
如果转换器能将mimeData 转换为formatetc 中指定的格式,则返回true
。
所有子类都必须重新实现这个纯虚函数。
[pure virtual]
bool QWindowsMimeConverter::canConvertToMime(const QString &mimeType, IDataObject *pDataObj) const
如果转换器能从pDataObj 中的可用格式转换到mimeType ,则返回true
。
所有子类都必须重新实现这个纯虚函数。
[pure virtual]
bool QWindowsMimeConverter::convertFromMime(const FORMATETC &formatetc, const QMimeData *mimeData, STGMEDIUM *pmedium) const
将mimeData 转换为formatetc 中指定的格式。转换后的数据应放入pmedium 结构中。
如果转换成功,则返回 true。
所有子类都必须重新实现这个纯虚函数。
[pure virtual]
QVariant QWindowsMimeConverter::convertToMime(const QString &mimeType, IDataObject *pDataObj, QMetaType preferredType) const
返回一个QVariant ,其中包含从pDataObj 转换而来的mimeType 的数据。如果可能,QVariant 应该是preferredType ,以避免不必要的转换。
所有子类都必须重新实现这个纯虚函数。
[pure virtual]
QList<FORMATETC> QWindowsMimeConverter::formatsForMime(const QString &mimeType, const QMimeData *mimeData) const
返回QList 的 FORMATETC 结构,代表可从mimeData 为mimeType 提供的不同窗口剪贴板格式。
所有子类都必须重新实现这个纯虚函数。
[pure virtual]
QString QWindowsMimeConverter::mimeForFormat(const FORMATETC &formatetc) const
返回将以formatetc 中指定的格式创建的 mime 类型,如果转换器不支持formatetc ,则返回空字符串。
所有子类都必须重新实现这个纯虚函数。
[static]
int QWindowsMimeConverter::registerMimeType(const QString &mimeType)
注册 MIME 类型mimeType ,并返回一个 ID 号,用于识别 Windows 上的格式。
MIME 类型application/x-qt-windows-mime;value="WindowsType"
将注册为WindowsType
的剪贴板格式。
© 2025 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.