Название: Drag and Drop: не вызывается dropEvent() Отправлено: xintrea от Января 17, 2014, 23:03 Пытаюсь сейчас разобраться с технологией Drag and Drop в Qt.
Проблема в том, что в принимающем виджете (унаследованном от QTreeView) событие dragEnterEvent() вызывается нормально, а событие dropEvent() - не вызывается. Я разрешил виджету принимать Drop-события: Код: KnowTreeView::KnowTreeView(QWidget *parent) : QTreeView(parent) Однако курсор при перетаскивании на этот виджет все равно в виде запрещающего знака. Реализация dragEnterEvent(), который срабатывает: Код: void KnowTreeView::dragEnterEvent(QDragEnterEvent *event) Реализация dropEvent() - считайте что просто один дебаговый вывод в консоль. И этого вывода нет. В чем может быть причина? Полная реализация программы: https://github.com/xintrea/mytetra_dev - ветка experimental Проблемный файл с виджетом - приемником: ./src/views/tree/KnowTreeView.cpp Файл с виджетом - источником: /src/views/recordTable/RecordListScreen.cpp Предполагается перетаскивание записи (верхняя правая область) на ветку дерева (левая область). Название: Re: Drag and Drop: не вызывается dropEvent() Отправлено: kambala от Января 17, 2014, 23:38 кажется надо еще dragMoveEvent() переопределять и если событие драга тебе подходит, то в нем надо вызывать event->acceptProposedAction(), иначе event->ignore().
еще попробуй добавить вызов setDragDropMode(QAbstractItemView::DragDrop); на всякий случай вот репозиторий, где я игрался с ДнД (там таблица, а не дерево): https://github.com/kambala-decapitator/qt-true-dnd-move Название: Re: Drag and Drop: не вызывается dropEvent() Отправлено: xintrea от Января 18, 2014, 14:18 кажется надо еще dragMoveEvent() переопределять и если событие драга тебе подходит, то в нем надо вызывать event->acceptProposedAction(), иначе event->ignore() Этого оказалось достаточно, спасибо. |