- 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/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: # 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()
QMetaType
Q_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
。