如何接受拖动和自定义的QTextEdit从QListWidget下降
问题描述:
在我自己的文字编辑(继承QTextEdit
)我实现这个DragEventHandler:如何接受拖动和自定义的QTextEdit从QListWidget下降
void CustomTextEdit::dragEnterEvent(QDragEnterEvent* e)
{
qDebug() << "void CustomTextEdit::dragEnterEvent(QDragEnterEvent* e)";
qDebug() << "e->mimeData()->hasText() is" << e->mimeData()->hasText();
QTextEdit::dragEnterEvent(e);
}
例:当我选择的文本编辑中的文本和周围拖动它, 的处理程序被调用,并且hasText()
是true
。
当我从QListWidget
将项目拖动到文本编辑处理程序也被调用 但hasText()
是false
。我怎样才能处理DropEvent呢? (QDragEnterEvent
基本上是QDropEvent
)
我知道,这将在DropHandler做,但我的问题是 什么信息从QListWidget
来的DropEvent包含哪些内容? 如何获取这些信息?
答
您可以使用QMimeData::formats()
询问QDragEnterEvent
它包含哪些格式的MIME数据。
例如:
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?
谢谢你这个优秀的答案!这正是我想知道的。 – HWende