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 = ...;
    
    QMimeData *mimeData = new QMimeData;
    mimeData->setData("text/csv", csvData);
  2. QMimeDataをサブクラス化し、hasFormat ()、formats ()、retrieveData ()を再実装することができます。
  3. ドラッグ・アンド・ドロップ操作が 1 つのアプリケーション内で発生する場合は、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 フォーマットがクリップボードのフォーマットに直接マッピングされるとは限りません。Windowsでは、MIMEフォーマットがクリップボードのフォーマットに直接マッピングされるとは限りません。Qtは、クリップボードのフォーマットをオープンスタンダードのMIMEフォーマットにマッピングするために、QWindowsMimeConverter 。同様に、QUtiMimeConverter はmacOSとiOSでMIMEをUniform Type Identifiersにマッピングします。

QClipboard,QDragEnterEvent,QDragMoveEvent,QDropEvent,QDrag,Drag and Dropも参照してください

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

QMimeData::QMimeData()

データのない新しいMIMEデータ・オブジェクトを構築する。

[virtual noexcept] QMimeData::~QMimeData()

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

void QMimeData::clear()

オブジェクト内のすべての MIME タイプとデータのエントリを削除する。

QVariant QMimeData::colorData() const

オブジェクトに格納されているデータが色(MIME タイプapplication/x-color )を表している場合は色を返し、そうでない場合は null variant を返します。

QMimeDataQt Core モジュールに属しているのに対し、QColorQt GUI に属しているため、QVariant が使用されます。QVariantQColor に変換するには、単に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 variant を返します。

QMimeDataQt Core モジュールに属し、QImageQt GUI に属するため、QVariant が使われます。QVariantQImage に変換するには、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

mimeType で指定された MIME タイプのデータを含む、与えられたtype の variant を返します。オブジェクトが指定された MIME タイプや variant タイプをサポートしていない場合は、代わりに null variant が返されます。

この関数は、一般的な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()、QMetaTypeQ_DECLARE_METATYPE()も参照してください

void QMimeData::setHtml(const QString &html)

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

html()、hasHtml()、setText() およびsetData()も参照

void QMimeData::setImageData(const QVariant &image)

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

QMimeDataQt Core モジュールに属し、QImageQt GUI に属するため、QVariant が使用される。QImage からQVariant への変換は暗黙的である。例えば

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

imageData()、hasImage()、setData()も参照

void QMimeData::setText(const QString &text)

データの表現に使用するプレーン・テキスト(MIMEタイプtext/plain )としてtext を設定する。

text()、hasText()、setHtml() およびsetData()も参照

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

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

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

Qt 5.0 以降、setUrls は、setText が呼び出される前であれば、URLをプレーンテキストとしてエクスポートし、lineedit やテキストエディタにドロップできるようにします。

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()も参照

© 2025 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.