3

私自身の TextEdit (inherits QTextEdit) で、この DragEventHandler を実装します。

void CustomTextEdit::dragEnterEvent(QDragEnterEvent* e)
{
    qDebug() << "void CustomTextEdit::dragEnterEvent(QDragEnterEvent* e)";
    qDebug() << "e->mimeData()->hasText() is" << e->mimeData()->hasText();

    QTextEdit::dragEnterEvent(e);
}

例: TextEdit 内のテキストを選択してドラッグすると、ハンドラーが呼び出されhasText()true.

アイテムを a から TextEdit にドラッグするとQListWidget、ハンドラーも呼び出されますがhasText()false. とにかく DropEvent を処理するにはどうすればよいですか? (QDragEnterEvent基本的にはQDropEvent)

これが DropHandler で行われることはわかっていますが、私の質問は 、DropEvent からの情報にはどのようなものがQListWidget含まれているのでしょうか? この情報にアクセスするにはどうすればよいですか?

4

1 に答える 1

5

QDragEnterEventを使用して、含まれている MIME データの形式を に尋ねることができますQMimeData::formats()

例えば:

const QMimeData *mimeData = e->mimeData();
QStringList mimeFormats = mimeData->formats();
foreach(QString format, mimeFormats)
  qDebug() << format;

このことから、イベントのmimeData形式がであることがわかりますapplication/x-qabstractitemmodeldatalist

特定の形式のデータは で取得できますがQMimeData::data(QString mimeType)、 の場合application/x-qabstractitemmodeldatalist、データは非常に特殊な方法でエンコードされます。この以前の SO の質問では、QByteArray返されたデータからのデータのデコードについて説明していますQMimeData::data: How to decode "application/x-qabstractitemmodeldatalist" in Qt for drag and drop?

于 2012-05-15T12:43:41.143 に答える