class QMimeData#

QMimeData 类提供了一个用于记录其MIME类型信息的容器。 更多信息...

Inheritance diagram of 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 提供方便的函数来访问数据

Tester

Getter

Setter

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:
            # access myData's data directly (not through QMimeData's 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()#
返回类型::

对象

警告

本节包含自动从 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)#
参数::

mimetype – 字符串

返回类型::

QByteArray

返回对象中存储的数据,格式由通过 mimetype 指定 MIME 类型描述。

参见

setData()

formats()#
返回类型::

字符串列表

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

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

hasColor()#
返回类型::

bool

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

hasFormat(mimetype)#
参数::

mimetype – 字符串

返回类型::

bool

如果对象可以返回指定 MIME 类型的数据,则返回true;否则返回false

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

hasHtml()#
返回类型::

bool

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

hasImage()#
返回类型::

bool

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

hasText()#
返回类型::

bool

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

hasUrls()#
返回类型::

bool

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

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

html()#
返回类型::

str

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

imageData()#
返回类型::

对象

警告

本节包含自动从 C++ 转换为 Python 的代码段,可能包含错误。

如果对象可以返回图像,则返回存储 QImageQVariant;否则返回一个空变量。

由于 QMimeData 属于 Qt 核心模块,而 QImage 属于 Qt 图形界面模块,因此使用 QVariant。要将 QVariant 转换为 QImage,只需使用 qvariant_cast() 即可。例如:

if event.mimeData().hasImage():
    image = QImage(event.mimeData().imageData())
    ...
removeFormat(mimetype)#
参数::

mimetype – 字符串

从对象中删除 mimetype 的数据条目。

retrieveData(mimetype, preferredType)#
参数::
  • mimetype – 字符串

  • preferredTypeQMetaType

返回类型::

对象

返回一个包含由指定 mimetype 确定的数据类型为给定类型的 variant。如果对象不支持指定的 MIME 类型或 variant 类型,则返回一个空 variant。

此函数由通用 data() getter 和便利 getter( text() , html() , urls() , imageData() , 和 colorData() )调用。如果您想使用自定义数据结构存储数据(而不是 QByteArray,这是 setData() 提供的)。那时,您还需要重新实现 hasFormat()formats()

参见

data()

setColorData(color)#
参数::

color – 对象

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

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

setData(mimetype, data)#
参数::

将基于 mimetype 的 MIME 类型相关联的数据设置为指定的 data

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

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

参见

data() hasFormat() QMetaType Q_DECLARE_METATYPE()

setHtml(html)#
参数::

html – 字符串

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

setImageData(image)#
参数::

image – 对象

警告

本节包含自动从 C++ 转换为 Python 的代码段,可能包含错误。

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

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

mimeData.setImageData(QImage("beautifulfjord.png"))
setText(text)#
参数::

text – 字符串

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

setUrls(urls)#
参数::

urls – QUrl 列表

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

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

从 Qt 5.0 开始,如果在此之前未调用 setText,则 setUrls 也会导出作为纯文本的 urls,以便将它们放入任何单行编辑器和文本编辑器。

text()#
返回类型::

str

返回数据的纯文本表示形式(MIME类型 text/plain)。

urls()#
返回类型::

包含QUrl的列表

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

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