- class QMimeData#
QMimeData类提供了一个用于记录其MIME类型信息的容器。 更多信息...摘要#
方法#
def
__init__()def
clear()def
colorData()def
data()def
hasColor()def
hasHtml()def
hasImage()def
hasText()def
hasUrls()def
html()def
imageData()def
removeFormat()def
setColorData()def
setData()def
setHtml()def
setImageData()def
setText()def
setUrls()def
text()def
urls()
虚方法#
def
formats()def
hasFormat()def
retrieveData()
注意
本文档可能包含自动从 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 类型
text/plaintext/htmltext/uri-listimage/*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对象中存储自定义数据有三种方法自定义数据可以直接作为
QMimeData对象中的QByteArray存储,使用setData()。例如csvData = ... mimeData = QMimeData() mimeData.setData("text/csv", csvData)
我们可以从
QMimeData派生出子类并重写hasFormat()、formats()和retrieveData()。如果在单个应用程序内发生拖放操作,我们可以从
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 – 字符串
- 返回类型::
返回对象中存储的数据,格式由通过
mimetype指定 MIME 类型描述。参见
- 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 的代码段,可能包含错误。
如果对象可以返回图像,则返回存储
QImage的QVariant;否则返回一个空变量。由于
QMimeData属于 Qt 核心模块,而 QImage 属于 Qt 图形界面模块,因此使用QVariant。要将QVariant转换为 QImage,只需使用qvariant_cast()即可。例如:if event.mimeData().hasImage(): image = QImage(event.mimeData().imageData()) ...
- removeFormat(mimetype)#
- 参数::
mimetype – 字符串
从对象中删除
mimetype的数据条目。返回一个包含由指定
mimetype确定的数据类型为给定类型的 variant。如果对象不支持指定的 MIME 类型或 variant 类型,则返回一个空 variant。此函数由通用
data()getter 和便利 getter(text(),html(),urls(),imageData(), 和colorData())调用。如果您想使用自定义数据结构存储数据(而不是QByteArray,这是setData()提供的)。那时,您还需要重新实现hasFormat()和formats()。参见
- setColorData(color)#
- 参数::
color – 对象
将对象中的颜色数据设置为指定的
color。颜色类型对应于 MIME 类型
application/x-color。- setData(mimetype, data)#
- 参数::
mimetype – 字符串
data –
QByteArray
将基于
mimetype的 MIME 类型相关联的数据设置为指定的data。对于最常见的数据类型,您还可以调用更高级的函数
setText()、setHtml()、setUrls()、setImageData()和setColorData()。注意,如果您想在拖放操作中使用自定义数据类型,必须使用
Q_DECLARE_METATYPE()宏将其注册为 Qtmeta type,并为其实现流操作。参见
data()hasFormat()QMetaTypeQ_DECLARE_METATYPE()- setHtml(html)#
- 参数::
html – 字符串
将
html设置为用于表示数据的 HTML(MIME 类型为text/html)。- setImageData(image)#
- 参数::
image – 对象
警告
本节包含自动从 C++ 转换为 Python 的代码段,可能包含错误。
将对象的内部数据设置为给定的
image。由于
QMimeData属于 Qt 核心模块,而QImage属于 Qt GUI,因此使用QVariant。从QImage到QVariant的转换是隐式的。例如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)。返回MIME数据对象中包含的URL列表。
URL对应于MIME类型
text/uri-list。