QMimeData Class Reference

[QtCore module]

该QMimeData类提供一个容器,用于数据记录有关它的MIME类型的信息。More…

继承QObject

Methods

  • __init__ (self)
  • clear (self)
  • QVariant colorData (self)
  • QByteArray data (self, QString mimetype)
  • QStringList formats (self)
  • bool hasColor (self)
  • bool hasFormat (self, QString mimetype)
  • bool hasHtml (self)
  • bool hasImage (self)
  • bool hasText (self)
  • bool hasUrls (self)
  • QString html (self)
  • QVariant imageData (self)
  • removeFormat (self, QString mimetype)
  • QVariant retrieveData (self, QString mimetype, Type preferredType)
  • setColorData (self, QVariant color)
  • setData (self, QString mimetype, QByteArray data)
  • setHtml (self, QString html)
  • setImageData (self, QVariant image)
  • setText (self, QString text)
  • setUrls (self, list-of-QUrl urls)
  • QString text (self)
  • list-of-QUrl urls (self)

Detailed Description

该QMimeData类提供一个容器,用于数据记录有关它的MIME类型的信息。

QMimeData是用来描述可以存储在信息clipboard,并经由传输drag and drop机制。 QMimeData对象,它们与相应的MIME类型保存数据关联起来,以确保信息可以在应用程序之间进行安全转移,并在同一应用程序内各地复制。

通常使用创建QMimeData对象new并供给到QDrag or QClipboard对象。这是为了让Qt的管理他们所使用的内存。

单个QMimeData对象可以使用几种不同的格式的同时存储相同的数据。该formats( )函数返回按优先顺序排列的可用格式的列表。该data( )函数返回一个MIME类型相关联的原始数据,并setData()允许您设置一个MIME类型的数据。

对于最常见的MIME类型, QMimeData提供方便的功能来访问数据:

Tester Getter Setter MIME Types
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的小工具拖拽,你最终会编写这样的代码:

  1. void MyWidget.dragEnterEvent([QDragEnterEvent](qdragenterevent.html) *event)
  2. {
  3. if (event->mimeData()->hasUrls())
  4. event->acceptProposedAction();
  5. }
  6. void MyWidget.dropEvent([QDropEvent](qdropevent.html) *event)
  7. {
  8. if (event->mimeData()->hasUrls()) {
  9. foreach ([QUrl](qurl.html) url, event->mimeData()->urls()) {
  10. ...
  11. }
  12. }
  13. }

有三种方法用于在QMimeData对象存储自定义数据:

  1. 自定义数据可以直接存储在一个QMimeData对象作为QByteArray using setData( ) 。例如:

    1. [QByteArray]($docs-qbytearray.html) csvData = ...;
    2. QMimeData *mimeData = new QMimeData;
    3. mimeData->setData("text/csv", csvData);
  2. 我们可以继承QMimeData和重新实现hasFormat( )formats()和retrieveData( ) 。

  3. 如果发生在一个单一的应用程序中的拖放操作,我们可以继承QMimeData ,并在其中添加额外的数据,并使用qobject_cast( )在接收器的放置事件处理程序。例如:

    1. void MyWidget.dropEvent([QDropEvent](qdropevent.html) *event)
    2. {
    3. const MyMimeData *myData =
    4. qobject_cast<const MyMimeData *>(event->mimeData());
    5. if (myData) {
    6. // access myData's data directly (not through QMimeData's API)
    7. }
    8. }

Platform-Specific MIME Types

在Windows上,formats( )也将返回的MIME数据可自定义格式,使用x-qt-windows-mime亚型,表明它们代表了非标准格式的数据。该格式将采取以下形式:

  1. application/x-qt-windows-mime;value="<custom type>"

下面是自定义MIME类型的示例:

  1. application/x-qt-windows-mime;value="FileGroupDescriptor"
  2. application/x-qt-windows-mime;value="FileContents"

value声明的每个格式的描述,其中的数据被编码的方式。

在Windows上, MIME格式并不总是直接映射到剪贴板格式。 Qt提供QWindowsMime映射的剪贴板格式,打开标准的MIME格式。类似地,QMacPasteboardMimeMIME映射到Mac的口味。


Method Documentation

  1. QMimeData.__init__ (self)

构造一个新的MIME数据对象中没有任何数据。

  1. QMimeData.clear (self)

删除所有在该对象的MIME类型和数据条目。

  1. QVariant QMimeData.colorData (self)

返回一个颜色,如果存储在所述对象数据代表颜色(MIME类型application/x-color) ,否则返回一个空的变体。

A QVariant被使用,因为QMimeData属于QtCore库,而QColor属于QtGui。若要转换QVariantQColor,只需使用qvariant_cast( ) 。例如:

  1. if (event->mimeData()->hasColor()) {
  2. [QColor]($docs-qcolor.html) color = qvariant_cast<[QColor]($docs-qcolor.html)>(event->mimeData()->colorData());
  3. ...
  4. }

See also hasColor( )setColorData()和data( ) 。

  1. QByteArray QMimeData.data (self, QString mimetype)

[

返回存储在该对象中由指定的MIME类型所描述的格式的数据mimeType

]($docs-qbytearray.html)

See also setData( ) 。

  1. QStringList QMimeData.formats (self)

返回由对象所支持的格式列表。这是MIME类型的量,对象可以返回合适的数据的列表。在列表中的格式是一个优先顺序。

对于数据的最常见的类型,你可以调用高级功能hasText( )hasHtml( )hasUrls( )hasImage()和hasColor( )来代替。

See also hasFormat( )setData()和data( ) 。

  1. bool QMimeData.hasColor (self)

返回True如果对象可以返回一个颜色( MIME类型application/x-color),否则返回False 。

See also setColorData( )colorData()和hasFormat( ) 。

  1. bool QMimeData.hasFormat (self, QString mimetype)

返回True如果对象可以返回的数据由指定的MIME类型mimeType否则返回False 。

对于数据的最常见的类型,你可以调用高级功能hasText( )hasHtml( )hasUrls( )hasImage()和hasColor( )来代替。

See also formats( )setData()和data( ) 。

  1. bool QMimeData.hasHtml (self)

返回True如果对象可以返回的HTML ( MIME类型text/html),否则返回False 。

See also setHtml( )html()和hasFormat( ) 。

  1. bool QMimeData.hasImage (self)

返回True如果对象可以返回一个图像,否则返回False 。

See also setImageData( )imageData()和hasFormat( ) 。

  1. bool QMimeData.hasText (self)

返回True如果对象可以返回纯文本( MIME类型text/plain),否则返回False 。

See also setText( )text( )hasHtml()和hasFormat( ) 。

  1. bool QMimeData.hasUrls (self)

返回True如果对象可以返回的URL列表,否则返回False 。

网址对应的MIME类型text/uri-list

See also setUrls( )urls()和hasFormat( ) 。

  1. QString QMimeData.html (self)

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

See also setHtml( )hasHtml()和setData( ) 。

  1. QVariant QMimeData.imageData (self)

返回QVariant存储QImage如果该对象可以返回一个图像,否则返回一个空的变体。

A QVariant被使用,因为QMimeData属于QtCore库,而QImage属于QtGui。若要转换QVariantQImage,只需使用qvariant_cast( ) 。例如:

  1. if (event->mimeData()->hasImage()) {
  2. [QImage]($docs-qimage.html) image = qvariant_cast<[QImage]($docs-qimage.html)>(event->mimeData()->imageData());
  3. ...
  4. }

See also setImageData()和hasImage( ) 。

  1. QMimeData.removeFormat (self, QString mimetype)

删除数据条目mimeType在该对象。

此功能被引入Qt的4.4 。

  1. QVariant QMimeData.retrieveData (self, QString mimetype, Type preferredType)

返回一个变量与给定的type包含的数据由指定的MIME类型mimeType。如果对象不支持的MIME类型或特定变量类型,则返回一个空的变体来代替。

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

See also data( ) 。

  1. QMimeData.setColorData (self, QVariant color)

在对象的颜色数据设置为给定color

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

See also colorData( )hasColor()和setData( ) 。

  1. QMimeData.setData (self, QString mimetype, QByteArray data)

设置与由下式给出的MIME类型相关联的数据mimeType到指定的data

对于数据的最常见的类型,你可以调用高级功能setText( )setHtml( )setUrls( )setImageData()和setColorData( )来代替。

请注意,如果你想使用自定义数据类型中的项目视图拖放操作,您必须注册为一个Qtmeta type使用Q_DECLARE_METATYPE()宏,并实现流运算符吧。流运营商然后必须与所登记的qRegisterMetaTypeStreamOperators()函数。

See also data( )hasFormat( )QMetaTypeqRegisterMetaTypeStreamOperators( ) 。

  1. QMimeData.setHtml (self, QString html)

Sets html作为HTML ( MIME类型text/html)用于表示数据。

See also html( )hasHtml( )setText()和setData( ) 。

  1. QMimeData.setImageData (self, QVariant image)

在对象中的数据设置为给定image

A QVariant被使用,因为QMimeData属于QtCore库,而QImage属于QtGui。从转换QImageQVariant是隐式的。例如:

  1. mimeData->setImageData([QImage]($docs-qimage.html)("beautifulfjord.png"));

See also imageData( )hasImage()和setData( ) 。

  1. QMimeData.setText (self, QString text)

Sets text作为纯文本( MIME类型text/plain)用于表示数据。

See also text( )hasText( )setHtml()和setData( ) 。

  1. QMimeData.setUrls (self, list-of-QUrl urls)

设置存储在MIME数据对象通过那些指定的URLurls

网址对应的MIME类型text/uri-list

See also urls( )hasUrls()和setData( ) 。

  1. QString QMimeData.text (self)

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

See also setText( )hasText( )html()和data( ) 。

  1. list-of-QUrl QMimeData.urls (self)

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

网址对应的MIME类型text/uri-list

See also setUrls( )hasUrls()和data( ) 。