Как отключить автопрокрутку вверх в QTableView при изменении базовой модели?

Я создал свой собственный класс, производный от QTableView, связанная модель получена от QAbstractTableModel. Данные в модели — это данные о производительности (имя процесса, использование памяти и т. д.), которые постоянно обновляются с коротким интервалом.

Обновление модели выполняется путем удаления всех данных (заключенных с помощью beginRemoveRows/endRemoveRows), а затем «чтения» слегка измененных данных в виде пакетной операции (заключенной с помощью beginInsertRows/endInsertRows).

Как отключить вертикальную автопрокрутку вверх всякий раз, когда я очищаю/читаю?


person Kristofer    schedule 06.10.2011    source источник
comment
Пожалуйста, опубликуйте как ответ   -  person crazyjul    schedule 07.10.2011
comment
Нет, скопируйте свое рабочее решение из вопроса в ответ   -  person crazyjul    schedule 07.10.2011


Ответы (1)


Рабочее решение

Перемещение полосы прокрутки было вызвано сигналом об удалении всех данных с помощью beginRemoveRows/endRemoveRows. Чтобы избежать этого, я вместо этого выдал сигнал dataChanged(...) с индексами начала/остановки обновленного списка элементов, если он был меньше существующей модели, и с индексами из существующей модель, если обновленный список был больше. Я также использовал begin/endRemoveRows, если обновленный список был меньше, и begin/endInsertRows, если обновленный список был больше.

person Kristofer    schedule 07.10.2011