<class name="QMimeData" doc="/** <p>The <a href="QMimeData.html#QMimeData()"><tt>QMimeData</tt></a> class provides a container for data that records information about its MIME type.</p> <p><a href="QMimeData.html#QMimeData()"><tt>QMimeData</tt></a> is used to describe information that can be stored in the <a href="QClipboard.html">clipboard</tt></a>, and transferred via the <a href="%2E%2E/dnd.html">drag and drop</tt></a> mechanism. <a href="QMimeData.html#QMimeData()"><tt>QMimeData</tt></a> objects associate the data that they hold with the corresponding MIME types to ensure that information can be safely transferred between applications, and copied around within the same application.</p> <p><a href="QMimeData.html#QMimeData()"><tt>QMimeData</tt></a> objects are usually created using <tt>new</tt> and supplied to <a href="QDrag.html"><tt>QDrag</tt></a> or <a href="QClipboard.html"><tt>QClipboard</tt></a> objects. This is to enable Qt to manage the memory that they use.</p> <p>A single <a href="QMimeData.html#QMimeData()"><tt>QMimeData</tt></a> object can store the same data using several different formats at the same time. The <a href="QMimeData.html#formats()"><tt>formats</tt></a> function returns a list of the available formats in order of preference. The <a href="QMimeData.html#data(java.lang.String)"><tt>data</tt></a> function returns the raw data associated with a MIME type, and <a href="QMimeData.html#setData(java.lang.String, com.trolltech.qt.core.QByteArray)"><tt>setData</tt></a> allows you to set the data for a MIME type.</p> <p>For the most common MIME types, <a href="QMimeData.html#QMimeData()"><tt>QMimeData</tt></a> provides convenience functions to access the data:</p> <p><table align="center" cellpadding="2" cellspacing="1" border="0"> <thead><tr valign="top" class="qt-style"><th>Tester</th><th>Getter</th><th>Setter</th><th>MIME Types</th></tr></thead> <tr valign="top" class="odd"><td><a href="QMimeData.html#hasText()"><tt>hasText</tt></a></td><td><a href="QMimeData.html#text()"><tt>text</tt></a></td><td><a href="QMimeData.html#setText(java.lang.String)"><tt>setText</tt></a></td><td><tt>text/plain</tt></td></tr> <tr valign="top" class="even"><td><a href="QMimeData.html#hasHtml()"><tt>hasHtml</tt></a></td><td><a href="QMimeData.html#html()"><tt>html</tt></a></td><td><a href="QMimeData.html#setHtml(java.lang.String)"><tt>setHtml</tt></a></td><td><tt>text/html</tt></td></tr> <tr valign="top" class="odd"><td><a href="QMimeData.html#hasUrls()"><tt>hasUrls</tt></a></td><td><a href="QMimeData.html#urls()"><tt>urls</tt></a></td><td><a href="QMimeData.html#setUrls(java.util.List<com.trolltech.qt.core.QUrl>)"><tt>setUrls</tt></a></td><td><tt>text/uri-list</tt></td></tr> <tr valign="top" class="even"><td><a href="QMimeData.html#hasImage()"><tt>hasImage</tt></a></td><td><a href="QMimeData.html#imageData()"><tt>imageData</tt></a></td><td><a href="QMimeData.html#setImageData(java.lang.Object)"><tt>setImageData</tt></a></td><td><tt>image/</tt> *</td></tr> <tr valign="top" class="odd"><td><a href="QMimeData.html#hasColor()"><tt>hasColor</tt></a></td><td><a href="QMimeData.html#colorData()"><tt>colorData</tt></a></td><td><a href="QMimeData.html#setColorData(java.lang.Object)"><tt>setColorData</tt></a></td><td><tt>application/x-color</tt></td></tr> </table></p> <p>For example, if your write a widget that accepts URL drags, you would end up writing code like this:</p> <pre> void MyWidget::dragEnterEvent(QDragEnterEvent *event) { if (event-&gt;mimeData()-&gt;hasUrls()) event-&gt;acceptProposedEvent(); } void MyWidget::dropEvent(QDropEvent *event) { if (event-&gt;mimeData()-&gt;hasUrls()) { QUrl url = event-&gt;mimeData()-&gt;urls(); ... } }</pre> <p>There are three appraches for storing custom data in a <a href="QMimeData.html#QMimeData()"><tt>QMimeData</tt></a> object:</p> <ol type="1"> <li>Custom data can be stored directly in a <a href="QMimeData.html#QMimeData()"><tt>QMimeData</tt></a> object as a <a href="%2E%2E/core/QByteArray.html"><tt>QByteArray</tt></a> using <a href="QMimeData.html#setData(java.lang.String, com.trolltech.qt.core.QByteArray)"><tt>setData</tt></a>. For example:<pre> QByteArray csvData = ...; QMimeData *mimeData = new QMimeData; mimeData-&gt;setData(&quot;text/csv&quot;, csvData);</pre> </li> <li>We can subclass <a href="QMimeData.html#QMimeData()"><tt>QMimeData</tt></a> and reimplement <a href="QMimeData.html#hasFormat(java.lang.String)"><tt>hasFormat</tt></a>, <a href="QMimeData.html#formats()"><tt>formats</tt></a>, and <a href="QMimeData.html#retrieveData(java.lang.String, int)"><tt>retrieveData</tt></a>.</li> <li>If the drag and drop operation occurs withing a single application, we can subclass <a href="QMimeData.html#QMimeData()"><tt>QMimeData</tt></a> and add extra data in it, and use a qobject_cast() in the receiver's drop event handler. For example:<pre> void MyWidget::dropEvent(QDropEvent *event) { const MyMimeData *myData = qobject_cast&lt;const MyMimeData *&gt;(event-&gt;mimeData()); if (myData) { <span class="comment">// access myData's data directly (not through QMimeData's API)</span> } }</pre> </li> </ol> <a name="platform-specific-mime-types"></a> <h3>Platform-Specific MIME Types</h3> <p>On Windows, <a href="QMimeData.html#formats()"><tt>formats</tt></a> will also return custom formats available in the MIME data, using the <tt>x-qt-windows-mime</tt> subtype to indicate that they represent data in non-standard formats. The formats will take the following form:</p> <pre> application/x-qt-windows-mime;value=&quot;&lt;custom type&gt;&quot;</pre> <p>The following are examples of custom MIME types:</p> <pre> application/x-qt-windows-mime;value=&quot;FileGroupDescriptor&quot; application/x-qt-windows-mime;value=&quot;FileContents&quot;</pre> <p>The <tt>value</tt> declaration of each format describes the way in which the data is encoded.</p> <p>On Windows, the MIME format does not always map directly to the clipboard formats. Qt provides QWindowsMime to map clipboard formats to open-standard MIME formats. Similarly, the QMacPasteboardMime maps MIME to Mac flavors.</p> @see <a href="QClipboard.html"><tt>QClipboard</tt></a> @see <a href="QDragEnterEvent.html"><tt>QDragEnterEvent</tt></a> @see <a href="QDragMoveEvent.html"><tt>QDragMoveEvent</tt></a> @see <a href="QDropEvent.html"><tt>QDropEvent</tt></a> @see <a href="QDrag.html"><tt>QDrag</tt></a> @see <tt>QWindowsMime</tt> @see <tt>QMacPasteboardMime</tt> @see <a href="%2E%2E/dnd.html">Drag and Drop</tt></a> */"> <method name="public QMimeData()" doc="/** <p>Constructs a new MIME data object with no data in it.</p> */"/> <method name="public final void clear()" doc="/** <p>Removes all the MIME type and data entries in the object.</p> */"/> <method name="public final java.lang.Object colorData()" doc="/** <p>Returns a color if the data stored in the object represents a color (MIME type <tt>application/x-color</tt>); otherwise returns a null variant.</p> <p>A <a href="%2E%2E/porting4.html#qvariant"><tt>QVariant</tt></a> is used because <a href="QMimeData.html#QMimeData()"><tt>QMimeData</tt></a> belongs to the <tt>QtCore</tt> library, whereas <a href="QColor.html"><tt>QColor</tt></a> belongs to <tt>QtGui</tt>. To convert the <a href="%2E%2E/porting4.html#qvariant"><tt>QVariant</tt></a> to a <a href="QColor.html"><tt>QColor</tt></a>, simply use qvariant_cast(). For example:</p> <pre> if (event-&gt;mimeData()-&gt;hasColor()) { QColor color = qvariant_cast&lt;QColor&gt;(event-&gt;mimeData()-&gt;colorData()); ... }</pre> @see <a href="QMimeData.html#hasColor()"><tt>hasColor</tt></a> @see <a href="QMimeData.html#setColorData(java.lang.Object)"><tt>setColorData</tt></a> @see <a href="QMimeData.html#data(java.lang.String)"><tt>data</tt></a> */"/> <method name="public final com.trolltech.qt.core.QByteArray data(java.lang.String mimetype)" doc="/** <p>Returns the data stored in the object in the format described by the MIME type specified by <tt>mimetype</tt>.</p> @see <a href="QMimeData.html#setData(java.lang.String, com.trolltech.qt.core.QByteArray)"><tt>setData</tt></a> */"/> <method name="public final boolean hasColor()" doc="/** <p>Returns true if the object can return a color (MIME type <tt>application/x-color</tt>); otherwise returns false.</p> @see <a href="QMimeData.html#setColorData(java.lang.Object)"><tt>setColorData</tt></a> @see <a href="QMimeData.html#colorData()"><tt>colorData</tt></a> @see <a href="QMimeData.html#hasFormat(java.lang.String)"><tt>hasFormat</tt></a> */"/> <method name="public final boolean hasHtml()" doc="/** <p>Returns true if the object can return HTML (MIME type <tt>text/html</tt>); otherwise returns false.</p> @see <a href="QMimeData.html#setHtml(java.lang.String)"><tt>setHtml</tt></a> @see <a href="QMimeData.html#html()"><tt>html</tt></a> @see <a href="QMimeData.html#hasFormat(java.lang.String)"><tt>hasFormat</tt></a> */"/> <method name="public final boolean hasImage()" doc="/** <p>Returns true if the object can return an image; otherwise returns false.</p> @see <a href="QMimeData.html#setImageData(java.lang.Object)"><tt>setImageData</tt></a> @see <a href="QMimeData.html#imageData()"><tt>imageData</tt></a> @see <a href="QMimeData.html#hasFormat(java.lang.String)"><tt>hasFormat</tt></a> */"/> <method name="public final boolean hasText()" doc="/** <p>Returns true if the object can return plain text (MIME type <tt>text/plain</tt>); otherwise returns false.</p> @see <a href="QMimeData.html#setText(java.lang.String)"><tt>setText</tt></a> @see <a href="QMimeData.html#text()"><tt>text</tt></a> @see <a href="QMimeData.html#hasHtml()"><tt>hasHtml</tt></a> @see <a href="QMimeData.html#hasFormat(java.lang.String)"><tt>hasFormat</tt></a> */"/> <method name="public final boolean hasUrls()" doc="/** <p>Returns true if the object can return a list of urls; otherwise returns false.</p> <p>URLs correspond to the MIME type <tt>text/uri-list</tt>.</p> @see <a href="QMimeData.html#setUrls(java.util.List<com.trolltech.qt.core.QUrl>)"><tt>setUrls</tt></a> @see <a href="QMimeData.html#urls()"><tt>urls</tt></a> @see <a href="QMimeData.html#hasFormat(java.lang.String)"><tt>hasFormat</tt></a> */"/> <method name="public final java.lang.String html()" doc="/** <p>Returns a string if the data stored in the object is HTML (MIME type <tt>text/html</tt>); otherwise returns an empty string.</p> @see <a href="QMimeData.html#setHtml(java.lang.String)"><tt>setHtml</tt></a> @see <a href="QMimeData.html#hasHtml()"><tt>hasHtml</tt></a> @see <a href="QMimeData.html#setData(java.lang.String, com.trolltech.qt.core.QByteArray)"><tt>setData</tt></a> */"/> <method name="public final java.lang.Object imageData()" doc="/** <p>Returns a <a href="%2E%2E/porting4.html#qvariant"><tt>QVariant</tt></a> storing a <a href="QImage.html"><tt>QImage</tt></a> if the object can return an image; otherwise returns a null variant.</p> <p>A <a href="%2E%2E/porting4.html#qvariant"><tt>QVariant</tt></a> is used because <a href="QMimeData.html#QMimeData()"><tt>QMimeData</tt></a> belongs to the <tt>QtCore</tt> library, whereas <a href="QImage.html"><tt>QImage</tt></a> belongs to <tt>QtGui</tt>. To convert the <a href="%2E%2E/porting4.html#qvariant"><tt>QVariant</tt></a> to a <a href="QImage.html"><tt>QImage</tt></a>, simply use qvariant_cast(). For example:</p> <pre> if (event-&gt;mimeData()-&gt;hasImage()) { QImage image = qvariant_cast&lt;QImage&gt;(event-&gt;mimeData()-&gt;imageData()); ... }</pre> @see <a href="QMimeData.html#setImageData(java.lang.Object)"><tt>setImageData</tt></a> @see <a href="QMimeData.html#hasImage()"><tt>hasImage</tt></a> */"/> <method name="public final void setColorData(java.lang.Object color)" doc="/** <p>Sets the color data in the object to the given <tt>color</tt>.</p> <p>Colors correspond to the MIME type <tt>application/x-color</tt>.</p> @see <a href="QMimeData.html#colorData()"><tt>colorData</tt></a> @see <a href="QMimeData.html#hasColor()"><tt>hasColor</tt></a> @see <a href="QMimeData.html#setData(java.lang.String, com.trolltech.qt.core.QByteArray)"><tt>setData</tt></a> */"/> <method name="public final void setData(java.lang.String mimetype, com.trolltech.qt.core.QByteArray data)" doc="/** <p>Sets the data associated with the MIME type given by <tt>mimetype</tt> to the specified <tt>data</tt>.</p> <p>For the most common types of data, you can call the higher-level functions <a href="QMimeData.html#setText(java.lang.String)"><tt>setText</tt></a>, <a href="QMimeData.html#setHtml(java.lang.String)"><tt>setHtml</tt></a>, <a href="QMimeData.html#setUrls(java.util.List<com.trolltech.qt.core.QUrl>)"><tt>setUrls</tt></a>, <a href="QMimeData.html#setImageData(java.lang.Object)"><tt>setImageData</tt></a>, and <a href="QMimeData.html#setColorData(java.lang.Object)"><tt>setColorData</tt></a> instead.</p> @see <a href="QMimeData.html#data(java.lang.String)"><tt>data</tt></a> @see <a href="QMimeData.html#hasFormat(java.lang.String)"><tt>hasFormat</tt></a> */"/> <method name="public final void setHtml(java.lang.String html)" doc="/** <p>Sets <tt>html</tt> as the HTML (MIME type <tt>text/html</tt>) used to represent the data.</p> @see <a href="QMimeData.html#html()"><tt>html</tt></a> @see <a href="QMimeData.html#hasHtml()"><tt>hasHtml</tt></a> @see <a href="QMimeData.html#setText(java.lang.String)"><tt>setText</tt></a> @see <a href="QMimeData.html#setData(java.lang.String, com.trolltech.qt.core.QByteArray)"><tt>setData</tt></a> */"/> <method name="public final void setImageData(java.lang.Object image)" doc="/** <p>Sets the data in the object to the given <tt>image</tt>.</p> <p>A <a href="%2E%2E/porting4.html#qvariant"><tt>QVariant</tt></a> is used because <a href="QMimeData.html#QMimeData()"><tt>QMimeData</tt></a> belongs to the <tt>QtCore</tt> library, whereas <a href="QImage.html"><tt>QImage</tt></a> belongs to <tt>QtGui</tt>. The conversion from <a href="QImage.html"><tt>QImage</tt></a> to <a href="%2E%2E/porting4.html#qvariant"><tt>QVariant</tt></a> is implicit. For example:</p> <pre> mimeData-&gt;setImageData(QImage(&quot;beautifulfjord.png&quot;));</pre> @see <a href="QMimeData.html#imageData()"><tt>imageData</tt></a> @see <a href="QMimeData.html#hasImage()"><tt>hasImage</tt></a> @see <a href="QMimeData.html#setData(java.lang.String, com.trolltech.qt.core.QByteArray)"><tt>setData</tt></a> */"/> <method name="public final void setText(java.lang.String text)" doc="/** <p>Sets <tt>text</tt> as the plain text (MIME type <tt>text/plain</tt>) used to represent the data.</p> @see <a href="QMimeData.html#text()"><tt>text</tt></a> @see <a href="QMimeData.html#hasText()"><tt>hasText</tt></a> @see <a href="QMimeData.html#setHtml(java.lang.String)"><tt>setHtml</tt></a> @see <a href="QMimeData.html#setData(java.lang.String, com.trolltech.qt.core.QByteArray)"><tt>setData</tt></a> */"/> <method name="public final void setUrls(java.util.List<com.trolltech.qt.core.QUrl> urls)" doc="/** <p>Sets the URLs stored in the MIME data object to those specified by <tt>urls</tt>.</p> <p>URLs correspond to the MIME type <tt>text/uri-list</tt>.</p> @see <a href="QMimeData.html#urls()"><tt>urls</tt></a> @see <a href="QMimeData.html#hasUrls()"><tt>hasUrls</tt></a> @see <a href="QMimeData.html#setData(java.lang.String, com.trolltech.qt.core.QByteArray)"><tt>setData</tt></a> */"/> <method name="public final java.lang.String text()" doc="/** <p>Returns a plain text (MIME type <tt>text/plain</tt>) representation of the data.</p> @see <a href="QMimeData.html#setText(java.lang.String)"><tt>setText</tt></a> @see <a href="QMimeData.html#hasText()"><tt>hasText</tt></a> @see <a href="QMimeData.html#html()"><tt>html</tt></a> @see <a href="QMimeData.html#data(java.lang.String)"><tt>data</tt></a> */"/> <method name="public final java.util.List<com.trolltech.qt.core.QUrl> urls()" doc="/** <p>Returns a list of URLs contained within the MIME data object.</p> <p>URLs correspond to the MIME type <tt>text/uri-list</tt>.</p> @see <a href="QMimeData.html#setUrls(java.util.List<com.trolltech.qt.core.QUrl>)"><tt>setUrls</tt></a> @see <a href="QMimeData.html#hasUrls()"><tt>hasUrls</tt></a> @see <a href="QMimeData.html#data(java.lang.String)"><tt>data</tt></a> */"/> <method name="public java.util.List<java.lang.String> formats()" doc="/** <p>Returns a list of formats supported by the object. This is a list of MIME types for which the object can return suitable data. The formats in the list are in a priority order.</p> <p>For the most common types of data, you can call the higher-level functions <a href="QMimeData.html#hasText()"><tt>hasText</tt></a>, <a href="QMimeData.html#hasHtml()"><tt>hasHtml</tt></a>, <a href="QMimeData.html#hasUrls()"><tt>hasUrls</tt></a>, <a href="QMimeData.html#hasImage()"><tt>hasImage</tt></a>, and <a href="QMimeData.html#hasColor()"><tt>hasColor</tt></a> instead.</p> @see <a href="QMimeData.html#hasFormat(java.lang.String)"><tt>hasFormat</tt></a> @see <a href="QMimeData.html#setData(java.lang.String, com.trolltech.qt.core.QByteArray)"><tt>setData</tt></a> @see <a href="QMimeData.html#data(java.lang.String)"><tt>data</tt></a> */"/> <method name="public boolean hasFormat(java.lang.String mimetype)" doc="/** <p>Returns true if the object can return data for the MIME type specified by <tt>mimetype</tt>; otherwise returns false.</p> <p>For the most common types of data, you can call the higher-level functions <a href="QMimeData.html#hasText()"><tt>hasText</tt></a>, <a href="QMimeData.html#hasHtml()"><tt>hasHtml</tt></a>, <a href="QMimeData.html#hasUrls()"><tt>hasUrls</tt></a>, <a href="QMimeData.html#hasImage()"><tt>hasImage</tt></a>, and <a href="QMimeData.html#hasColor()"><tt>hasColor</tt></a> instead.</p> @see <a href="QMimeData.html#formats()"><tt>formats</tt></a> @see <a href="QMimeData.html#setData(java.lang.String, com.trolltech.qt.core.QByteArray)"><tt>setData</tt></a> @see <a href="QMimeData.html#data(java.lang.String)"><tt>data</tt></a> */"/> <method name="protected java.lang.Object retrieveData(java.lang.String mimetype, int preferredType)" doc="/** <p>Returns a variant with the given <tt>preferredType</tt> containing data for the MIME type specified by <tt>mimetype</tt>. If the object does not support the MIME type or variant type given, a null variant is returned instead.</p> <p>This function is called by the general <a href="QMimeData.html#data(java.lang.String)"><tt>data</tt></a> getter and by the convenience getters (<a href="QMimeData.html#text()"><tt>text</tt></a>, <a href="QMimeData.html#html()"><tt>html</tt></a>, <a href="QMimeData.html#urls()"><tt>urls</tt></a>, <a href="QMimeData.html#imageData()"><tt>imageData</tt></a>, and <a href="QMimeData.html#colorData()"><tt>colorData</tt></a>). You can reimplement it if you want to store your data using a custom data structure (instead of a <a href="%2E%2E/core/QByteArray.html"><tt>QByteArray</tt></a>, which is what <a href="QMimeData.html#setData(java.lang.String, com.trolltech.qt.core.QByteArray)"><tt>setData</tt></a> provides). You would then also need to reimplement <a href="QMimeData.html#hasFormat(java.lang.String)"><tt>hasFormat</tt></a> and <a href="QMimeData.html#formats()"><tt>formats</tt></a>.</p> @see <a href="QMimeData.html#data(java.lang.String)"><tt>data</tt></a> */"/> </class>