Как отключить автопрокрутку вверх в QTableView при изменении базовой модели? - PullRequest
3 голосов
/ 06 октября 2011

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

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

Как отключить вертикальную автопрокрутку наверх при очистке / чтении?

1 Ответ

1 голос
/ 07 октября 2011

Рабочий раствор

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

...