Положение индикатора Qt Drag and Drop - PullRequest
2 голосов
/ 01 апреля 2011

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

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

1 Ответ

3 голосов
/ 01 апреля 2011

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...