2014-10-21 5 views
0

У меня есть пользовательский класс QTableView, который показывает содержимое пользовательской модели на основе QAbstractItemModel. В модели я применил все необходимые методы для поддержки изменения порядка строк с помощью DragAndDrop (используя dropMimeData()).Как обновить выбор в QTableView после строки перетаскивания

Но я не знаю, как изменить выбор в представлении после изменения модели (и представления). Например: пользователь щелкает по строке, становится «выбрано»; пользователь перетаскивает эту строку в другое место;
строки - свопы в модели и виде;

НО выбор остается на первом выбранном ряду.

Как модель может уведомить мнение об изменении выбора?

ПРИМЕЧАНИЕ. Я не могу создать дополнительные сигналы и слоты, потому что не используйте MOC.

+0

Посмотрите на документацию 'QItemSelectionModel'. – mhcuervo

ответ

0

Решение:

  1. В функции dropMimeData() нужно использовать beginMoveRows() и andMoveRows() вокруг места, где измененные данные.
  2. Необходимо обработать сигнал QAbstractItemModel::rowsMoved модели, где мы можем получить индекс целевой строки.