QWindowsMimeConverter 类

QWindowsMimeConverter 类将开放标准 MIME 映射到 Windows 剪贴板格式。 更多...

头文件 #include <QWindowsMimeConverter>
CMakefind_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmakeQT += gui

公共函数

QWindowsMimeConverter()
虚拟~QWindowsMimeConverter()
虚拟 boolcanConvertFromMime(const FORMATETC &formatetc, const QMimeData *mimeData) const = 0
虚拟 boolcanConvertToMime(const QString &mimeType, IDataObject *pDataObj) const = 0
虚拟 boolconvertFromMime(const FORMATETC &formatetc, const QMimeData *mimeData, STGMEDIUM *pmedium) const = 0
虚拟 QVariantconvertToMime(const QString &mimeType, IDataObject *pDataObj, QMetaType preferredType) const = 0
虚拟 QList<FORMATETC>formatsForMime(const QString &mimeType, const QMimeData *mimeData) const = 0
虚拟 QStringmimeForFormat(const FORMATETC &formatetc) const = 0

静态公共成员

intregisterMimeType(const QString &mimeType)

详细描述

Qt 的拖放和剪贴板功能使用 MIME 标准。在 X11 中,这可以简单地映射到 Xdnd 协议,但在 Windows 中,尽管一些应用程序使用 MIME 类型来描述剪贴板格式,但其他应用程序则使用任意的非标准化命名约定或 Windows 的未命名内置格式。

通过实例化 QWindowsMimeConverter 子类以提供 Windows 剪贴板和 MIME 格式之间的转换,可以将专有剪贴板格式转换为 MIME 格式。

在实例化 QGuiApplication 后构建您的转换器实现实例

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

销毁实例将取消注册转换器并删除转换支持。也可以堆分配转换器实例;Qt 获取所有权,在 QGuiApplication 关闭时将删除转换器对象。

Qt 对以下 Windows 剪贴板格式有预定义支持

Windows 格式等效 MIME 类型
CF_UNICODETEXTtext/plain
CF_TEXTtext/plain
CF_DIBimage/xyz,其中 xyzQt 图像格式
CF_HDROPtext/uri-list
CF_INETURLtext/uri-list
CF_HTMLtext/html

本类的示例用途是将 Windows 元文件剪切板格式(CF_METAFILEPICT)映射到 MIME 类型 image/x-wmf,以及从 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,表示从 mimeData 中提供的不同 Windows 剪切板格式,这些格式可以用于 mimeType

所有子类都必须重写此纯虚函数。

[纯虚函数] QString QWindowsMimeConverter::mimeForFormat(const FORMATETC &formatetc) const

返回由 formatetc 中指定的格式创建的 MIME 类型,如果此转换器不支持 formatetc,则返回空字符串。

所有子类都必须重写此纯虚函数。

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

注册 MIME 类型 mimeType,并返回在 Windows 上标识格式的 ID。

将 MIME 类型 application/x-qt-windows-mime;value="WindowsType" 注册为 WindowsType 的剪贴板格式。

© 2024 The Qt Company Ltd. 本文档中包含的贡献的文档版权属于其各自的拥有者。本提供在此的文档在自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款下授权。Qt 及其相应标志是芬兰和/或全球其他国家的 The Qt Company Ltd. 的商标。所有其他商标均为其各自所有者的财产。