QAbstractItemView - fetchMoreTimer
Я создал динамическую модель загрузки, которая предоставляет данные для модифицированного qTreeView. Казалось, все работает нормально. Пока я не понял, что иногда GUI чего-то "ждет". Оказалось, что fetchMore моей модели время от времени вызывается. Я обнаружил, что в QAbstractItemView работает базовый класс большинства представлений "fetchMoreTimer"
- rowInserted И / ИЛИ updateGeometires вызывается и запускает таймер.
- когда таймер тикает, он запускает timerEvent
- Результаты timerEvent приводят к doItemsLayout ()
- doItemsLayout () спрашивает canFetchMore (это точно может! Я динамически загружаю миллионы строк), и поэтому модель выбирает больше.
А через некоторое время таймер снова включается... что приводит к практически бесконечной перерисовке treeView (в основном потоке, как все операции с графическим интерфейсом). Это предотвращает, например, загрузку / сохранение, что является дорогой памятью. (сохранение данных загрузки, связанных с миллионами строк данных.)
Может кто-то предложить, как отключить fetchMoreTimer (конечно, в QAbstractItemViewPrivate:/) Я попытался создать подкласс таймера timerEvent. Но, к сожалению, около 6 различных таймеров запускают событие, и я не знаю, как узнать, что я могу игнорировать.
Некоторые предложения?