PySide6.QtCore.QMimeData

class QMimeData

QMimeData 类提供了一个容器,用于存储记录其MIME类型信息的数据。更多

PySide6.QtCore.QMimeData 的继承图

概要

方法

虚拟方法

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

QMimeData 用于描述可以存储在剪贴板中并通过拖放机制传输的信息。QMimeData 对象将它们持有的数据与相应的 MIME 类型关联起来,以确保信息可以在应用程序之间安全传输,并在同一应用程序内复制。

QMimeData 对象通常使用 new 创建,并提供给 QDrag 或 QClipboard 对象。这是为了让 Qt 能够管理它们使用的内存。

一个单一的QMimeData对象可以同时使用几种不同的格式存储相同的数据。formats()函数按优先顺序返回可用格式的列表。data()函数返回与MIME类型关联的原始数据,而setData()允许您为MIME类型设置数据。

对于最常见的MIME类型,QMimeData 提供了访问数据的便捷函数:

测试员

获取者

设置者

MIME类型

hasText()

text()

setText()

text/plain

hasHtml()

html()

setHtml()

text/html

hasUrls()

urls()

setUrls()

text/uri-list

hasImage()

imageData()

setImageData()

image/ *

hasColor()

colorData()

setColorData()

application/x-color

例如,如果你编写一个接受URL拖拽的小部件,你最终会编写如下代码:

def dragEnterEvent(self, event):

    if event.mimeData().hasUrls():
        event.acceptProposedAction()

def dropEvent(self, event):

    if event.mimeData().hasUrls():
        for url in event.mimeData().urls():
            ...

有三种方法可以在QMimeData对象中存储自定义数据:

  1. 自定义数据可以直接存储在QMimeData对象中,作为QByteArray使用setData()。例如:

    csvData = ...
    mimeData = QMimeData()
    mimeData.setData("text/csv", csvData)
    
  2. 我们可以子类化 QMimeData 并重新实现 hasFormat()formats()retrieveData()

  3. 如果拖放操作发生在单个应用程序内,我们可以子类化QMimeData并在其中添加额外数据,并在接收者的放置事件处理程序中使用qobject_cast()。例如:

    def dropEvent(self, event):
    
        myData =
                MyMimeData(event.mimeData())
        if myData:
            # 直接访问myData的数据(不通过QMimeData的API)
    

平台特定的MIME类型

在Windows上,formats() 还将返回MIME数据中可用的自定义格式,使用 x-qt-windows-mime 子类型来指示它们表示非标准格式的数据。这些格式将采用以下形式:

application/x-qt-windows-mime;value="<custom type>"

以下是自定义MIME类型的示例:

application/x-qt-windows-mime;value="FileGroupDescriptor"
application/x-qt-windows-mime;value="FileContents"

每种格式的value声明描述了数据的编码方式。

在某些情况下(例如删除多个电子邮件附件),有多个数据值可用。可以通过添加index值来访问它们:

application/x-qt-windows-mime;value="FileContents";index=0
application/x-qt-windows-mime;value="FileContents";index=1

在Windows上,MIME格式并不总是直接映射到剪贴板格式。Qt提供了QWindowsMimeConverter来将剪贴板格式映射到开放标准的MIME格式。同样,QUtiMimeConverter在macOS和iOS上将MIME映射到统一类型标识符。

另请参阅

QClipboardQDragEnterEventQDragMoveEventQDropEventQDragDrag Drop

__init__()

构造一个新的MIME数据对象,其中没有数据。

clear()

移除对象中的所有MIME类型和数据条目。

colorData()
Return type:

对象

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

如果对象中存储的数据表示颜色(MIME类型application/x-color),则返回颜色;否则返回空变体。

使用 QVariant 是因为 QMimeData 属于 Qt Core 模块,而 QColor 属于 Qt GUI。要将 QVariant 转换为 QColor,只需使用 qvariant_cast()。例如:

if event.mimeData().hasColor():
    color = QColor(event.mimeData().colorData())
    ...
data(mimetype)
Parameters:

mimetype – str

Return type:

QByteArray

返回以mimeType指定的MIME类型描述的格式存储在对象中的数据。如果此对象不包含mimeType MIME类型的数据(参见hasFormat()),此函数可能会尽力进行转换。

另请参阅

hasFormat() setData()

formats()
Return type:

字符串列表

返回对象支持的格式列表。这是一个MIME类型列表,对象可以返回适合的数据。列表中的格式按优先级排序。

对于最常见的数据类型,您可以调用更高级别的函数 hasText()hasHtml()hasUrls()hasImage()hasColor() 来代替。

hasColor()
Return type:

布尔

如果对象可以返回颜色(MIME类型application/x-color),则返回true;否则返回false

hasFormat(mimetype)
Parameters:

mimetype – str

Return type:

布尔

如果对象能够返回由mimeType指定的MIME类型的数据,则返回true;否则返回false

对于最常见的数据类型,您可以调用更高级别的函数 hasText()hasHtml()hasUrls()hasImage()hasColor() 来代替。

另请参阅

formats() setData() data()

hasHtml()
Return type:

布尔

如果对象可以返回HTML(MIME类型text/html),则返回true;否则返回false

hasImage()
Return type:

布尔

如果对象可以返回图像,则返回true;否则返回false。

hasText()
Return type:

布尔

如果对象可以返回纯文本(MIME类型 text/plain),则返回 true;否则返回 false

hasUrls()
Return type:

布尔

如果对象可以返回一个URL列表,则返回true;否则返回false

URLs 对应于 MIME 类型 text/uri-list

html()
Return type:

字符串

如果存储在对象中的数据是HTML(MIME类型text/html),则返回一个字符串;否则返回一个空字符串。

imageData()
Return type:

对象

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

如果对象可以返回图像,则返回存储QImage的QVariant;否则返回空变体。

使用QVariant是因为QMimeData属于Qt Core模块,而QImage属于Qt GUI。要将QVariant转换为QImage,只需使用qvariant_cast()。例如:

if event.mimeData().hasImage():
    image = QImage(event.mimeData().imageData())
    ...

另请参阅

setImageData() hasImage()

removeFormat(mimetype)
Parameters:

mimetype – str

移除对象中mimeType的数据条目。

retrieveData(mimetype, preferredType)
Parameters:
  • mimetype – str

  • preferredTypeQMetaType

Return type:

对象

返回一个包含由mimeType指定的MIME类型数据的给定type的变体。如果对象不支持给定的MIME类型或变体类型,则返回一个空变体。

此函数由通用的data()获取器和便捷获取器(text()html()urls()imageData()colorData())调用。如果你想使用自定义数据结构存储数据(而不是setData()提供的QByteArray),你可以重新实现它。然后你还需要重新实现hasFormat()formats()

另请参阅

data()

setColorData(color)
Parameters:

颜色 – 对象

将对象中的颜色数据设置为给定的color

颜色对应于MIME类型 application/x-color

setData(mimetype, data)
Parameters:

将给定mimeType的MIME类型关联的数据设置为指定的data

对于最常见的数据类型,您可以调用更高级别的函数 setText()setHtml()setUrls()setImageData()setColorData() 来代替。

请注意,如果您想在项目视图的拖放操作中使用自定义数据类型,您必须将其注册为Qt meta type,使用Q_DECLARE_METATYPE()宏,并为其实现流操作符。

另请参阅

data() hasFormat() QMetaType Q_DECLARE_METATYPE()

setHtml(html)
Parameters:

html – 字符串

html设置为用于表示数据的HTML(MIME类型text/html)。

setImageData(image)
Parameters:

image – 对象

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

将对象中的数据设置为给定的 image

使用QVariant是因为QMimeData属于Qt核心模块,而QImage属于Qt GUI。从QImage到QVariant的转换是隐式的。例如:

mimeData.setImageData(QImage("beautifulfjord.png"))
setText(text)
Parameters:

文本 – str

text设置为用于表示数据的纯文本(MIME类型text/plain)。

setUrls(urls)
Parameters:

urls – QUrl 的列表

将MIME数据对象中存储的URL设置为urls指定的URL。

URLs 对应于 MIME 类型 text/uri-list

自 Qt 5.0 起,如果之前没有调用 setText,setUrls 还会将 URL 导出为纯文本,以便可以将它们拖放到任何行编辑器和文本编辑器中。

另请参阅

urls() hasUrls() setData()

text()
Return type:

字符串

如果此对象包含纯文本,则返回数据的纯文本(MIME类型text/plain)表示。如果它包含其他内容,此函数会尽力将其转换为纯文本。

urls()
Return type:

.list of QUrl

返回包含在MIME数据对象中的URL列表。

URLs 对应于 MIME 类型 text/uri-list

另请参阅

setUrls() hasUrls() data()