PySide6.QtCore.QMimeData¶
- 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提供了访问数据的便捷函数:测试员
获取者
设置者
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: # 直接访问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:
返回以
mimeType指定的MIME类型描述的格式存储在对象中的数据。如果此对象不包含mimeTypeMIME类型的数据(参见hasFormat()),此函数可能会尽力进行转换。另请参阅
- 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()来代替。- 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()) ...
另请参阅
- removeFormat(mimetype)¶
- Parameters:
mimetype – str
移除对象中
mimeType的数据条目。- retrieveData(mimetype, preferredType)¶
- Parameters:
mimetype – str
preferredType –
QMetaType
- Return type:
对象
返回一个包含由
mimeType指定的MIME类型数据的给定type的变体。如果对象不支持给定的MIME类型或变体类型,则返回一个空变体。此函数由通用的
data()获取器和便捷获取器(text()、html()、urls()、imageData()和colorData())调用。如果你想使用自定义数据结构存储数据(而不是setData()提供的QByteArray),你可以重新实现它。然后你还需要重新实现hasFormat()和formats()。另请参阅
- setColorData(color)¶
- Parameters:
颜色 – 对象
将对象中的颜色数据设置为给定的
color。颜色对应于MIME类型
application/x-color。- setData(mimetype, data)¶
- Parameters:
mimetype – str
data –
QByteArray
将给定
mimeType的MIME类型关联的数据设置为指定的data。对于最常见的数据类型,您可以调用更高级别的函数
setText()、setHtml()、setUrls()、setImageData()和setColorData()来代替。请注意,如果您想在项目视图的拖放操作中使用自定义数据类型,您必须将其注册为Qt
meta type,使用Q_DECLARE_METATYPE()宏,并为其实现流操作符。另请参阅
data()hasFormat()QMetaTypeQ_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 导出为纯文本,以便可以将它们拖放到任何行编辑器和文本编辑器中。- text()¶
- Return type:
字符串
如果此对象包含纯文本,则返回数据的纯文本(MIME类型
text/plain)表示。如果它包含其他内容,此函数会尽力将其转换为纯文本。返回包含在MIME数据对象中的URL列表。
URLs 对应于 MIME 类型
text/uri-list。