2013-09-10 3 views
0

Приложение My PyQt извлекает данные из сторонних API-вызовов. Возвращаемый набор данных обычно содержит около сотни предметов. Иногда возвращаемый набор данных содержит десятки тысяч предметов. В тех случаях интерфейс очень медленный для отображения - слишком медленно, чтобы быть полезным.Динамически загружать/заполнять данные на основе позиции маркера полосы прокрутки?

Чтобы ускорить работу, я хотел бы загрузить меньше данных во время начальной загрузки. Я хотел бы иметь возможность заполнить интерфейс на основе позиции ручек полосы прокрутки. Я бы предпочел, чтобы полоса прокрутки имела правильный диапазон, как только отображается виджет, но по мере прокрутки пользователя данные, которые они должны видеть, заполняются в виджет (в этом случае QTreeWidget). Это означает, что я предпочел бы, чтобы пользователю не пришлось прокручивать нижнюю часть виджета, чтобы загрузить больше данных внизу &, поэтому измените диапазон полосы прокрутки.

Я считаю, что QSqlTable ведет себя таким образом, но из-за того, что я не полагаюсь на sql-запросы (и потому, что некоторые данные столбцов вычисляются графическим интерфейсом), я не считаю, что могу использовать это модуль. Возможно ли это с помощью QTreeWidget и без прямых вызовов sql?

ответ

0

Существует встроенная функциональность для этого в каркасе модели Qt. См. QAbstractItemModel.canFetchMore() и QAbstractItemModel.fetchMore()here

О, я только что понял, что вы не используете MVF, а автономный QTreeWidget. Если вы имеете дело с большими данными и требуете такой функциональности, переключиться на MVF может быть правильным.

+0

К сожалению, у меня нет бюджета времени, чтобы переключиться на MVC. Я знаю, что это правильный способ сделать это, но я унаследовал этот код и должен работать с тем, что у меня есть. –