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 |
公共函数
| 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
如果转换器能够在mime 和uti 之间进行双向转换,则返回true ;否则返回false 。
[pure virtual] QList<QByteArray> QUtiMimeConverter::convertFromMime(const QString &mime, const QVariant &data, const QString &uti) const
返回从 MIME 类型mime 转换而来的 Mac UTIuti ,即data 。
请注意,所有 Mac UTI 都必须是自终止的。返回值可能包含尾部数据。
所有子类都必须重写此纯虚函数。
[pure virtual] QVariant QUtiMimeConverter::convertToMime(const QString &mime, const QList<QByteArray> &data, const QString &uti) const
返回从 Mac UTIuti 转换为 MIME 类型mime 的data 。
请注意,所有 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 进行转换,则返回空字符串。
所有子类都必须重写此纯虚函数。
© 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.