QAbstractItemView - fetchMoreTimer

Я создал динамическую модель загрузки, которая предоставляет данные для модифицированного qTreeView. Казалось, все работает нормально. Пока я не понял, что иногда GUI чего-то "ждет". Оказалось, что fetchMore моей модели время от времени вызывается. Я обнаружил, что в QAbstractItemView работает базовый класс большинства представлений "fetchMoreTimer"

  1. rowInserted И / ИЛИ updateGeometires вызывается и запускает таймер.
  2. когда таймер тикает, он запускает timerEvent
  3. Результаты timerEvent приводят к doItemsLayout ()
  4. doItemsLayout () спрашивает canFetchMore (это точно может! Я динамически загружаю миллионы строк), и поэтому модель выбирает больше.

А через некоторое время таймер снова включается... что приводит к практически бесконечной перерисовке treeView (в основном потоке, как все операции с графическим интерфейсом). Это предотвращает, например, загрузку / сохранение, что является дорогой памятью. (сохранение данных загрузки, связанных с миллионами строк данных.)

Может кто-то предложить, как отключить fetchMoreTimer (конечно, в QAbstractItemViewPrivate:/) Я попытался создать подкласс таймера timerEvent. Но, к сожалению, около 6 различных таймеров запускают событие, и я не знаю, как узнать, что я могу игнорировать.

Некоторые предложения?

0 ответов

Другие вопросы по тегам