Положение индикатора Qt Drag and Drop

У меня есть класс, который расширяется от QTreeView, который имеет модель данных, которая расширяется от QAbstractItemModel, и я хочу перетащить элемент в него.

Моя проблема заключается в том, что при перетаскивании у меня отображается индикатор перетаскивания, и на нем отображается либо прямоугольник, который нужно перетаскивать на элемент, либо линия, которую нужно перетаскивать между элементами. Когда я получаю dropMimeData в моей модели данных, я не вижу способа извлечь эти данные. Я заметил, что существует dropIndicatorPosition в QAbstractItemView, но оно защищено. Итак, мой вопрос, как я могу узнать в dropMimeData, есть ли падение на элементе, до него или после него?

1 ответ

Решение

Хорошо, я нашел ответ:

bool MyModel::dropMimeData(const QMimeData *data, Qt::DropAction action,
                  int row, int column, const QModelIndex &parent)

Если QModelIndex является допустимым (не parent.row(), parent.column() со значением -1), тогда он перетаскивается на этот объект в качестве его родителя, и мне остается только выяснить, куда поместить его в модель.

Если он недействителен, тогда строка и столбец не -1, и у меня неверный модельный индекс, и объект вставляется в эту позицию.

Это было в документации qt " Использование перетаскивания с представлениями элементов" - я видел только общую документацию перетаскивания.

Другие вопросы по тегам