このページでは

QMimeData Class

QMimeData クラスは、その MIME タイプに関する情報を記録するデータ用のコンテナを提供します。詳細...

ヘッダー: #include <QMimeData>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
継承元: QObject

パブリック関数

QMimeData()
virtual ~QMimeData()
void clear()
QVariant colorData() const
QByteArray data(const QString &mimeType) const
virtual QStringList formats() const
bool hasColor() const
virtual bool hasFormat(const QString &mimeType) const
bool hasHtml() const
bool hasImage() const
bool hasText() const
bool hasUrls() const
QString html() const
QVariant imageData() const
void removeFormat(const QString &mimeType)
void setColorData(const QVariant &color)
void setData(const QString &mimeType, const QByteArray &data)
void setHtml(const QString &html)
void setImageData(const QVariant &image)
void setText(const QString &text)
void setUrls(const QList<QUrl> &urls)
QString text() const
QList<QUrl> urls() const

プロテクトされた関数

virtual QVariant retrieveData(const QString &mimeType, QMetaType type) const

詳細な説明

QMimeData は、clipboard に格納され、ドラッグ&ドロップの仕組みを介して転送される情報を記述するために使用されます。QMimeData オブジェクトは、保持するデータを対応する MIME タイプに関連付けることで、アプリケーション間で情報を安全に転送したり、同じアプリケーション内でコピーしたりできるようにします。

QMimeData オブジェクトは通常、new を使用して作成され、QDrag またはQClipboard オブジェクトに渡されます。これは、Qt がそれらを使用するメモリを管理できるようにするためです。

1つのQMimeDataオブジェクトは、同じデータを複数の異なる形式で同時に格納することができます。formats()関数は、利用可能な形式を優先順にリストとして返します。data()関数は、MIMEタイプに関連付けられた生データを返し、setData()関数を使用すると、MIMEタイプのデータを設定することができます。

最も一般的な MIME タイプについては、QMimeData がデータにアクセスするための便利な関数を提供しています:

テスターゲッターセッターMIMEタイプ
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のドラッグを受け付けるウィジェットを作成する場合、次のようなコードを書くことになります:

void MyWidget::dragEnterEvent(QDragEnterEvent *event)
{
    if (event->mimeData()->hasUrls())
        event->acceptProposedAction();
}

void MyWidget::dropEvent(QDropEvent *event)
{
    if (event->mimeData()->hasUrls()) {
        foreach (QUrl url, event->mimeData()->urls()) {
            //...
        }
    }
}

QMimeData オブジェクトにカスタムデータを格納するには、3つの方法があります:

  1. setData() を使用することで、カスタムデータをQByteArray として QMimeData オブジェクトに直接格納できます。例えば:
    QByteArray csvData = something;
    
    QMimeData *mimeData = new QMimeData;
    mimeData->setData("text/csv", csvData);
  2. QMimeDataをサブクラス化し、hasFormat()、formats()、およびretrieveData()を再実装することもできます。
  3. ドラッグ&ドロップ操作が単一のアプリケーション内で発生する場合、QMimeDataをサブクラス化し、そこに追加のデータを格納して、レシーバーのドロップイベントハンドラ内でqobject_cast()を使用することができます。例:
    void MyWidget::dropEvent(QDropEvent *event)
    {
        const MyMimeData *myData =
                qobject_cast<const 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 XMLは、クリップボード形式をオープンスタンダードのMIME形式にマッピングするためのQWindowsMimeConverter を提供しています。同様に、QUtiMimeConverter は、macOSおよびiOS上でMIMEをUniform Type Identifiers(UTI)にマッピングします。

関連項目: QClipboard 、QDragEnterEvent 、QDragMoveEvent 、QDropEvent 、QDrag 、およびドラッグ&ドロップ。

メンバ関数のドキュメント

QMimeData::QMimeData()

データが含まれていない新しいMIMEデータオブジェクトを作成します。

[virtual noexcept] QMimeData::~QMimeData()

MIME データオブジェクトを破棄します。

void QMimeData::clear()

オブジェクト内のすべてのMIMEタイプおよびデータエントリを削除します。

QVariant QMimeData::colorData() const

オブジェクトに格納されているデータが色を表す場合(MIMEタイプapplication/x-color )、色を返します。それ以外の場合は、nullバリアントを返します。

QVariant が使用されるのは、QMimeData がQt Core モジュールに属しているのに対し、QColor はQt GUI に属しているためです。QVariant をQColor に変換するには、単にqvariant_cast() を使用します。例:

if (event->mimeData()->hasColor()) {
    QColor color = qvariant_cast<QColor>(event->mimeData()->colorData());
    //...
}

hasColor()、setColorData()、およびdata()も参照してください 。

QByteArray QMimeData::data(const QString &mimeType) const

mimeType で指定された MIME タイプで定義された形式で、オブジェクトに格納されているデータを返します。このオブジェクトにmimeType MIME タイプ(hasFormat() を参照)のデータが含まれていない場合、この関数は可能な限りその形式への変換を行うことがあります。

hasFormat() およびsetData()も参照してください 。

[virtual] QStringList QMimeData::formats() const

オブジェクトがサポートするフォーマットのリストを返します。これは、オブジェクトが適切なデータを返せる MIME タイプのリストです。リスト内のフォーマットは優先順位順に並んでいます。

最も一般的なデータタイプについては、代わりに上位レベルの関数であるhasText()、hasHtml()、hasUrls()、hasImage()、およびhasColor() を呼び出すこともできます。

hasFormat()、setData()、およびdata()も参照してください 。

bool QMimeData::hasColor() const

オブジェクトが色を返すことができる場合(MIMEタイプapplication/x-color )、true を返します。そうでない場合は、false を返します。

setColorData()、colorData()、およびhasFormat()も参照してください 。

[virtual] bool QMimeData::hasFormat(const QString &mimeType) const

オブジェクトがmimeType で指定されたMIMEタイプに対応するデータを返せる場合はtrue を返し、そうでない場合はfalse を返します。

最も一般的なデータタイプについては、代わりに上位レベルの関数であるhasText()、hasHtml()、hasUrls()、hasImage()、およびhasColor() を呼び出すことができます。

formats()、setData()、およびdata()も参照してください 。

bool QMimeData::hasHtml() const

オブジェクトが HTML (MIME タイプtext/html) を返すことができる場合はtrue を返し、そうでない場合はfalse を返します。

setHtml()、html()、およびhasFormat()も参照してください 。

bool QMimeData::hasImage() const

オブジェクトが画像を返せる場合は `true ` を返し、そうでない場合は `false` を返します。

setImageData()、imageData()、およびhasFormat()も参照してください 。

bool QMimeData::hasText() const

オブジェクトがプレーンテキスト(MIMEタイプtext/plain )を返せる場合は `true ` を返し、そうでない場合は `false` を返します。

setText()、text()、hasHtml()、およびhasFormat()も参照してください 。

bool QMimeData::hasUrls() const

オブジェクトが URL のリストを返すことができる場合は `true ` を返し、そうでない場合は `false` を返します。

URL は MIME タイプtext/uri-list に対応します。

setUrls()、urls()、およびhasFormat()も参照してください 。

QString QMimeData::html() const

オブジェクトに格納されているデータがHTML(MIMEタイプtext/html )である場合は文字列を返し、そうでない場合は空の文字列を返します。

setHtml()、hasHtml()、およびsetData()も参照してください 。

QVariant QMimeData::imageData() const

オブジェクトが画像を返すことができる場合は、QImage を格納した `QVariant ` を返し、そうでない場合は `null` バリアントを返します。

QVariant が使用されるのは、QMimeData がQt Core モジュールに属しているのに対し、QImage はQt GUI に属しているためです。QVariant をQImage に変換するには、単にqvariant_cast()を使用します。例:

if (event->mimeData()->hasImage()) {
    QImage image = qvariant_cast<QImage>(event->mimeData()->imageData());
    //...
}

setImageData() およびhasImage()も参照してください 。

void QMimeData::removeFormat(const QString &mimeType)

オブジェクト内の「mimeType 」のデータエントリを削除します。

[virtual protected] QVariant QMimeData::retrieveData(const QString &mimeType, QMetaType type) const

指定されたtype を含むバリアントを返します。この には、mimeType で指定されたMIMEタイプに関するデータが含まれています。オブジェクトが指定されたMIMEタイプまたはバリアントタイプをサポートしていない場合は、代わりにnullバリアントが返されます。

この関数は、汎用的なdata()ゲッターおよび利便性向上のためのゲッター(text()、html()、urls()、imageData()、colorData())によって呼び出されます。カスタムデータ構造(setData()が提供するQByteArray の代わりに)を使用してデータを格納したい場合は、この関数を再実装することができます。 その場合、hasFormat() およびformats() も再実装する必要があります。

data()も参照してください 。

void QMimeData::setColorData(const QVariant &color)

オブジェクト内の色データを、指定されたcolor に設定します。

色は MIME タイプapplication/x-color に対応しています。

colorData()、hasColor()、およびsetData()も参照してください 。

void QMimeData::setData(const QString &mimeType, const QByteArray &data)

mimeType で指定された MIME タイプに関連付けられたデータを、指定されたdata に設定します。

最も一般的なデータ型については、代わりに、より高レベルの関数であるsetText()、setHtml()、setUrls()、setImageData()、およびsetColorData() を呼び出すことができます。

なお、アイテムビューのドラッグ&ドロップ操作でカスタムデータ型を使用したい場合は、Q_DECLARE_METATYPE() マクロを使用して Qtmeta type として登録し、そのデータ型用のストリーム演算子を実装する必要があります。

data()、hasFormat()、QMetaType 、およびQ_DECLARE_METATYPE()も参照してください 。

void QMimeData::setHtml(const QString &html)

データを表現するために使用されるHTML(MIMEタイプ:text/html )として、html を設定します。

html()、hasHtml()、setText()、およびsetData()も参照してください 。

void QMimeData::setImageData(const QVariant &image)

オブジェクト内のデータを、指定されたimage に設定します。

QVariant が使用されるのは、QMimeData がQt Core モジュールに属しているのに対し、QImage はQt GUI に属しているためです。QImage からQVariant への変換は暗黙的に行われます。例:

mimeData->setImageData(QImage("beautifulfjord.png"));

imageData()、hasImage()、およびsetData()も参照してください 。

void QMimeData::setText(const QString &text)

text を、データを表現するために使用されるプレーンテキスト(MIME タイプtext/plain )として設定します。

text()、hasText()、setHtml()、およびsetData()も参照してください 。

void QMimeData::setUrls(const QList<QUrl> &urls)

MIMEデータオブジェクトに格納されているURLを、urls で指定されたURLに設定します。

URL は MIME タイプtext/uri-list に対応しています。

Qt 5.0 以降、setUrls は、setText が以前に呼び出されていない場合、URL をプレーンテキストとしてエクスポートするようになりました。これにより、任意のラインエディットやテキストエディタに URL を貼り付けることが可能になります。

urls()、hasUrls()、およびsetData()も参照してください 。

QString QMimeData::text() const

このオブジェクトにプレーンテキストが含まれている場合、そのデータのプレーンテキスト(MIMEタイプtext/plain )表現を返します。他のコンテンツが含まれている場合、この関数はそれをプレーンテキストに変換するよう最善を尽くします。

setText()、hasText()、html()、およびdata()も参照してください 。

QList<QUrl> QMimeData::urls() const

MIME データオブジェクトに含まれる URL のリストを返します。

URLは、MIMEタイプtext/uri-list に対応しています。

setUrls()、hasUrls()、およびdata()も参照してください 。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.