在我自己的 TextEdit(继承QTextEdit
)中,我实现了这个 DragEventHandler:
void CustomTextEdit::dragEnterEvent(QDragEnterEvent* e)
{
qDebug() << "void CustomTextEdit::dragEnterEvent(QDragEnterEvent* e)";
qDebug() << "e->mimeData()->hasText() is" << e->mimeData()->hasText();
QTextEdit::dragEnterEvent(e);
}
Run Code Online (Sandbox Code Playgroud)
示例:当我在 TextEdit 中选择文本并拖动它时,处理程序被调用并且hasText()
是true
.
当我从一个拖动一个项目QListWidget
到文本编辑处理程序也被调用,但是hasText()
是false
。我该如何处理 DropEvent 呢?(QDragEnterEvent
基本上是一个QDropEvent
)
我知道这将在 DropHandler 中完成,但我的问题是
DropEvent 来自QListWidget
包含哪些信息?
如何访问这些信息?
您可以使用 询问QDragEnterEvent
它包含哪些格式的 mime 数据QMimeData::formats()
。
例如:
const QMimeData *mimeData = e->mimeData();
QStringList mimeFormats = mimeData->formats();
foreach(QString format, mimeFormats)
qDebug() << format;
Run Code Online (Sandbox Code Playgroud)
由此我们可以看到事件的mimeData
格式为application/x-qabstractitemmodeldatalist
.
可以使用 检索任何特定格式的数据QMimeData::data(QString mimeType)
,但在 的情况下application/x-qabstractitemmodeldatalist
,数据以非常特定的方式编码。之前的这个问题涵盖了从QByteArray
返回的数据解码QMimeData::data
:How to decode "application/x-qabstractitemmodeldatalist" in Qt for drag and drop?
归档时间: |
|
查看次数: |
2327 次 |
最近记录: |