PavelK
@PavelK

Как должны правильно взаимодействовать модель и QSortFilterProxyModel?

Приветствую!
Ситуация следующая:
Есть моделька, основанная на QAbstractItemModel, так как данных достаточно много, получаю их с помощью предназначенного для этого canFetchMore и fetchMode
и когда просто модель отображается в ListView (qml), всё замечательно, данные подгружаются по мере пролистывания.

Теперь на эту модельку сверху вешаю прокси, на основе QSortFilterProxyModel
в ней для теста отбираю строки (переопределив filterAcceptsRow) по какому нибудь полю, не важно.

Дальше начинаются проблемы.
При установленной фильтрации во вьюшке выводятся не все возможные значения!
т.е. выводятся только загруженные в fetchMore в данный момент.
Т.е. в fetchMore гружу по 100 записей, не выводятся ни одной, т.к. целевые значения будут прогружены начиная с 500.
и прогрузки дальше не происходит т.к. логично, что вьюшка не считает необходимым загружать ещё т.к. всё умещается и не надо пролистывать но и прокси моделька не считает нужным прогрузить дальше, либо как-то сообщить основной модели - мне нужны записи с вот такими значениями.

Подскажите, пожалуйста, как быть?
Не, я согласен, что лучше всего будет выбирать нужные значение через запрос к базе, что бы не грузить лишнего,
но как тогда лучше сделать связь с основной моделью?

т.е. например я в fetchRow основной модели прогрузил записи от 0 до 100, в прокси модели нужно выбирать, которые располагаются начиная с 500, ок, я говорю основной модели - прогрузи ка записи с вот такими значенияи, если есть.
Ок, гружу.

Но возникает следующая проблема - если запись например 555 добавлена в модель, то при скролинге вьюшки, она попросит записи с 500 по 600 и я тогда снова добавлю запись 555. т.е. получается будет дублирование.
Запоминать записи, которые грузил? что-то костылём попахивает.
Может есть красивый выход из ситуации?

Спасибо, да же за подсказки, на что смотреть!
  • Вопрос задан
  • 418 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы