How to accept Drag and Drop from QListWidget in custom QTextEdit
drag-and-drop, qt
Solution
You can ask a `QDragEnterEvent` which formats of mime data it contains using `QMimeData::formats()`.
For example:
const QMimeData *mimeData = e->mimeData();
QStringList mimeFormats = mimeData->formats();
foreach(QString format, mimeFormats)
qDebug() << format;
From this we can see that the event's `mimeData` has the format `application/x-qabstractitemmodeldatalist`.
The data of any particular format can be retrieved with `QMimeData::data(QString mimeType)`, though in the case of `application/x-qabstractitemmodeldatalist`, the data is encoded in a pretty specific way. This previous SO question covers decoding the data from the `QByteArray` returned by `QMimeData::data`: How to decode "application/x-qabstractitemmodeldatalist" in Qt for drag and drop?
Problem
In my own TextEdit (inherits `QTextEdit`) I implement this DragEventHandler: ``` void CustomTextEdit::dragEnterEvent(QDragEnterEvent* e) { qDebug() << "void CustomTextEdit::dragEnterEvent(QDragEnterEvent* e)"; qDebug() << "e->mimeData()->hasText() is" << e->mimeData()->hasText(); QTextEdit::dragEnterEvent(e); } ``` Example: When I select text inside the TextEdit and drag it around, the handler gets called and `hasText()` is `true`. When I drag an item from a `QListWidget` into the TextEdit the handler also gets called but `hasText()` is `false`. How can I handle the DropEvent anyway? (`QDragEnterEvent` basically IS a `QDropEvent`) I know that this would be done in the DropHandler but my question is what information does the DropEvent coming from `QListWidget` contain? How can access this information?