TLDR: Как сообщить модели порядок порядка строк (и что он изменился)?
Итак, у меня есть модель, которая наследует форму QAbstractTableModel
, и я представляю ее с использованием подкласса QTableView
, где я устанавливаю вертикальный заголовок, чтобы он был подвижным, чтобы я мог перетаскивать строки мышью, захватывая сторону таблицы. Это прекрасно работает, но я хочу, чтобы моя модель знала, в каком порядке находятся строки.
Я нашел сигнал sectionMoved
, но он испускается только один раз, то есть когда я переместил строки от 0 до 1, Я только узнал, что визуальный индекс строки 0 изменился с 0 на 1; Я не получаю информацию о том, что (логический) визуальный индекс строки 1 изменился с 1 на 0, чтобы приспособиться к первому изменению.
Так как мне передать информацию о порядке отображения элементов в моей модели? Или единственное, что я могу сделать, это перебрать все строки после того, как произошло изменение (в слоте, связанном с сигналом sectionMoved), проверить их визуальный индекс и передать его в модель? Есть ли лучший образец, как такие случаи должны обрабатываться?
Я также пытался переопределить dragEnterEvent
и dropEvent
и вызывать moveRow
при отбрасывании, но механизм сигнала / слота кажется более qt-way и является более тестируемым; также мне не нужно перемещать строки в модели, мне нужен только порядок, чтобы сохранить его для следующего выполнения программы.
Если он измеряет, я использую pyside2 (Qt для python) на основе Qt 5.14 и python 3,8; но я думаю, что мой вопрос больше касается общего подхода Qt.