QUtiMimeConverter Class

QUtiMimeConverter 类可在 MIME 类型和统一类型标识符(UTI)格式之间进行转换。更多

头文件: #include <QUtiMimeConverter>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
Qt 6.5

公共类型

flags HandlerScope

公共函数

QUtiMimeConverter()
virtual ~QUtiMimeConverter()
bool canConvert(const QString &mime, const QString &uti) const
virtual QList<QByteArray> convertFromMime(const QString &mime, const QVariant &data, const QString &uti) const = 0
virtual QVariant convertToMime(const QString &mime, const QList<QByteArray> &data, const QString &uti) const = 0
virtual int count(const QMimeData *mimeData) const
virtual QString mimeForUti(const QString &uti) const = 0
virtual QString utiForMime(const QString &mime) const = 0

详细说明

Qt 的拖放和剪贴板功能使用 MIME 标准。在 X11 上,它可轻松映射到 Xdnd 协议。在 Mac 上,尽管有些应用程序使用 MIME 来描述剪贴板内容,但更常见的是使用 Apple 的 UTI 格式。

QUtiMimeConverter 的作用是在 MIME 和 UTI 之间架起一座桥梁;通过子类该类,可以扩展 Qt 的拖放和剪贴板处理功能,以转换成不支持的或专有的 UTI 格式。

在实例化QGuiApplication 后,构建一个转换器实现的实例:

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

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

Qt 预定义支持以下 UTI:

  • public.utf8-plain-text - 转换为 "text/plain"。
  • public.utf16-plain-text - 转换为 "text/plain"。
  • public.text - 转换为 "text/plain
  • public.html - 转换为 "text/html
  • public.url - 转换为 "text/uri-list
  • public.file-url - 转换为 "text/uri-list
  • public.tiff-转换为 "application/x-qt-image
  • public.vcard - 转换为 "text/plain
  • com.apple.traditional-mac-plain-text - 转换为 "text/plain "格式
  • com.apple.pict - 转换为 "application/x-qt-image"。

在处理 MIME 数据时,Qt 将遍历 QUtiMimeConverter 的所有实例,以找到可以转换为或转换自特定 MIME 类型的实例。为此,它将在每个实例上调用mimeForUti() 或utiForMime(),首先从(并选择)最后创建的实例开始。实际转换将通过convertToMime() 和convertFromMime() 完成。

成员函数文档

QUtiMimeConverter::QUtiMimeConverter()

构造一个新的转换对象,并将其添加到全局访问的可用转换器列表中。

在创建QGuiApplication 后调用此构造函数。

[virtual noexcept] QUtiMimeConverter::~QUtiMimeConverter()

销毁转换对象,将其从可用转换器的全局列表中删除。

bool QUtiMimeConverter::canConvert(const QString &mime, const QString &uti) const

如果转换器可以在mimeuti 之间进行转换(双向),则返回true ;否则返回false

[pure virtual] QList<QByteArray> QUtiMimeConverter::convertFromMime(const QString &mime, const QVariant &data, const QString &uti) const

data 从 MIME 类型mime 转换为 Mac UTIuti

请注意,Mac UTI 必须全部自结束。返回值可能包含尾部数据。

所有子类必须重新实现此纯虚函数。

[pure virtual] QVariant QUtiMimeConverter::convertToMime(const QString &mime, const QList<QByteArray> &data, const QString &uti) const

data 从 Mac UTIuti 转换为 MIME 类型mime

请注意,Mac UTI 必须全部自结束。输入data 可能包含尾部数据。

所有子类必须重新实现该纯虚拟函数。

[virtual] int QUtiMimeConverter::count(const QMimeData *mimeData) const

返回给定mimeData

[pure virtual] QString QUtiMimeConverter::mimeForUti(const QString &uti) const

返回 Mac UTIuti 使用的 MIME 类型,如果转换器不支持从uti 转换,则返回空字符串。

所有子类必须重新实现该纯虚拟函数。

[pure virtual] QString QUtiMimeConverter::utiForMime(const QString &mime) const

返回 MIME 类型mime 使用的 Mac UTI,如果转换器不支持从mime 转换,则返回空字符串。

所有子类必须重新实现该纯虚拟函数。

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