Название: Как заставить представление считывать данные из модели для всех ячеек сразу ? Отправлено: Cyrax от Января 14, 2008, 21:16 Как заставить представление считывать данные из модели для всех ячеек сразу и не дёргать модель при скроллинге. Т.е. за счёт большего расхода памяти.
Тормоза раздражают... Название: Re: Как заставить представление считывать данные из модели для всех ячеек сразу ? Отправлено: Racheengel от Января 14, 2008, 21:20 Для этого надо свое представление делать, читать данные, кэшировать и отображать соответственно.
Название: Re: Как заставить представление считывать данные из модели для всех ячеек сразу ? Отправлено: Cyrax от Января 14, 2008, 22:22 Желательно бы стандартным обойтись. Может политику какую установить...
Название: Re: Как заставить представление считывать данные из модели для всех ячеек сразу ? Отправлено: Racheengel от Января 14, 2008, 23:28 стандартные представления и так работают достаточно быстро.
а может, проблема именно в модели? а не в представлении? Название: Re: Как заставить представление считывать данные из модели для всех ячеек сразу ? Отправлено: Cyrax от Января 14, 2008, 23:50 У меня модель (посредством Manager'а) долго "запросы" представления выполняет. Вполне возможно, что можно заметно оптимизировать манипуляции модели с данными, но этой проблемы можно было бы избежать, если б проедставление сразу всё считало и хранило в памяти. Вначале пришлось бы чуть больше подождать (при загрузке всей таблицы), но зато потом не было бы тормозов...
Название: Re: Как заставить представление считывать данные из модели для всех ячеек сразу ? Отправлено: pastor от Января 15, 2008, 00:42 А какой объем данных используется?
Название: Re: Как заставить представление считывать данные из модели для всех ячеек сразу ? Отправлено: Racheengel от Января 15, 2008, 01:37 я бы начал с модели...
ибо представлений может быть 100 вариантов, и прикручивать к каждому из них кэш, чтобы нивилировать тормоза модели имхо не есть гут... Название: Re: Как заставить представление считывать данные из модели для всех ячеек сразу ? Отправлено: Alex03 от Января 15, 2008, 07:32 я бы начал с модели... +1ибо представлений может быть 100 вариантов, и прикручивать к каждому из них кэш, чтобы нивилировать тормоза модели имхо не есть гут... Cyrax или модифицируй свою модельку, или напиши промежуточную, которая выгребает все денные из твоей и предоставляет их вьюхе(ам). А вьюха не то и вьюха, чтобы только отображать данные, иначе модели нафиг не нужны. Название: Re: Как заставить представление считывать данные из модели для всех ячеек сразу ? Отправлено: Tonal от Января 15, 2008, 08:42 Какой объем данных?
Кешь я бы прикрутил к Manager-у (Racheengel вроде именно это имел в виду?) Название: Re: Как заставить представление считывать данные из модели для всех ячеек сразу ? Отправлено: Racheengel от Января 15, 2008, 12:00 Именно. И просмотреть, какие сигналы эмитятся при обновлении, возможно, их надо бы отключить на этот период.
Название: Re: Как заставить представление считывать данные из модели для всех ячеек сразу ? Отправлено: pastor от Января 15, 2008, 12:50 Какой объем данных? Я хотел узнать у автора, какой объем данных хранит моделька (кол-во строк\столбцов), что возникают проблемы со скролом. Я сейчас юзаю свою модель, к которая содержит 4 столбца и 640000 строок. Немалейшей задержки при скроле (Винда, Линукс). По теме: имхо, проблема в моделе, а не во вьюхе Название: Re: Как заставить представление считывать данные из модели для всех ячеек сразу ? Отправлено: Deiv от Января 18, 2008, 09:42 Пардон.
У меня сложилось впечатление что автор работает с SQL данными. Соответственно модель должна быть QSqlQueryModel. в этом случае будет достаточно: Код: while (model->canFetchMore()) { ЗЫ: в случае если впечатление сложилось неверно - подсказка бесполезна :-[ Название: Re: Как заставить представление считывать данные из модели для всех ячеек сразу ? Отправлено: ритт от Января 18, 2008, 10:29 дэйв, подсказка бесполезна
[qoute]кстати fetchMore(); грузит кажется по 255 записей, можно както это количество регулять?[/qoute] программно нельзя. это константа |