QMimeData Class

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

Header: #include <QMimeData>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Inherits: 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 バリアントを返します。

QMimeData は Qt Core モジュールに属し、QColor は Qt 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 を返します。

QMimeData は Qt Core モジュールに属し、QImage は Qt 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 に設定します。

QMimeData は Qt Core モジュールに属し、QImage は Qt GUI に属するため、QVariant が使用されます。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 は MIME タイプtext/uri-list に対応します。

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

urls(),hasUrls(),setData()も参照

QString QMimeData::text() const

このオブジェクトがプレーンテキストを含んでいる場合、データのプレーンテキスト(MIME タイプtext/plain )表現を返します。このオブジェクトがプレーンテキストを含んでいる場合、データのプレーンテキスト表現(MIME タイプ )を返します。

setText()、hasText()、html()、data()も参照

QList<QUrl> QMimeData::urls() const

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

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

setUrls()、hasUrls()、data()も参照してください

本書に含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。