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/plain
text/html
text/uri-list
image/
*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类型描述的格式存储在对象中的数据。如果此对象不包含mimeType
MIME类型的数据(参见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()
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 导出为纯文本,以便可以将它们拖放到任何行编辑器和文本编辑器中。- text()¶
- Return type:
字符串
如果此对象包含纯文本,则返回数据的纯文本(MIME类型
text/plain
)表示。如果它包含其他内容,此函数会尽力将其转换为纯文本。返回包含在MIME数据对象中的URL列表。
URLs 对应于 MIME 类型
text/uri-list
。