Название: QSqlTableModel тормозит когда включен сортинг Отправлено: Авварон от Март 05, 2011, 03:01 Собсно сабж.
Есть таблица 20000*16 полей. Очень сильно тормозит fetchMore. Зафетчить всю таблицу не получается. Кроме того, сильно тормозит при использовании ползунка скролла, видимо связано с тем, что скроллится оно плавно и data() вызывается на все промежуточные стейты. Название: Re: QSqlTableModel тормозит когда включен сортинг Отправлено: Kolobok от Март 05, 2011, 12:10 Поле, по которому сортируется, индексировано?
Название: Re: QSqlTableModel тормозит когда включен сортинг Отправлено: Авварон от Март 05, 2011, 12:36 Не. Поможет?)
Название: Re: QSqlTableModel тормозит когда включен сортинг Отправлено: Kolobok от Март 05, 2011, 13:14 Должно помочь.
Название: Re: QSqlTableModel тормозит когда включен сортинг Отправлено: Авварон от Март 05, 2011, 15:26 Не помогло. Вроде сортировка стала быстрее, но тем не менее лаги при скролле и фетче остались такие же. Есть идея что тормозит именно data() при выборе из базы. Что делать?
Название: Re: QSqlTableModel тормозит когда включен сортинг Отправлено: Пантер от Март 05, 2011, 15:34 А тормозит постоянно или пока данные не подтянет?
Название: Re: QSqlTableModel тормозит когда включен сортинг Отправлено: Авварон от Март 05, 2011, 15:40 Именно пока не подтянет данные. Но вот как их подтягивать? (пробовал scrollToBottom - спасает, но до пересортировки:))
Название: Re: QSqlTableModel тормозит когда включен сортинг Отправлено: Пантер от Март 05, 2011, 15:51 :)
Код Это делаешь после селекта и будет тебе счастье. Название: Re: QSqlTableModel тормозит когда включен сортинг Отправлено: Авварон от Март 05, 2011, 17:12 Нет не делает. Она не грузит данные по фетчу, только количество записей во вью меняет (ползунок меняется)
Название: Re: QSqlTableModel тормозит когда включен сортинг Отправлено: Пантер от Март 05, 2011, 17:18 Хм. Странно. У меня работало.
Тогда пиши свою модель. Название: Re: QSqlTableModel тормозит когда включен сортинг Отправлено: Авварон от Март 05, 2011, 18:02 И чо я там сделаю?)
Название: Re: QSqlTableModel тормозит когда включен сортинг Отправлено: Авварон от Март 05, 2011, 19:44 Проблема же в том, что тупит именно вьюха, когда забирает данные.
Название: Re: QSqlTableModel тормозит когда включен сортинг Отправлено: Авварон от Март 06, 2011, 02:05 Хм, заюзал тейбл вью вместо три вью, все летать стало:) фетч за 0.2 сек делается
Название: Re: QSqlTableModel тормозит когда включен сортинг Отправлено: Авварон от Март 10, 2011, 11:40 Так, ну ладно, еще куча мега вопросов от меня. Можно ли сделать чтобы при сорте сохранялось выделение? (модель-то перестраивается, айайай). Ну и еще мега вопрос - 0.2 сек - это нормально или можно улучшить? (если хранить все данные в памяти и тупо делать тейблмодель по этой памяти, то сортируется мгновенно (при помощи QSortFilterProxyModel))
Название: Re: QSqlTableModel тормозит когда включен сортинг Отправлено: GreatSnake от Март 10, 2011, 16:18 Цитировать Можно ли сделать чтобы при сорте сохранялось выделение? (модель-то перестраивается, айайай) Да вроде всё просто)Перегружаешь Q*Model::sort(), перед вызовом базового sort() запоминаешь QAbstractItemView::currentIndex(), после восстанавливаешь. Название: Re: QSqlTableModel тормозит когда включен сортинг Отправлено: Авварон от Март 10, 2011, 16:43 индекс не сохраняется, модель-то резетится. Мне по-хорошему надо оставаться на старой записи, а не на конкретной строке. (то есть для реверса это будет rowCount() - currentRow()). Другого способа нет?
Название: Re: QSqlTableModel тормозит когда включен сортинг Отправлено: twp от Март 10, 2011, 16:44 можно попробовать сохранить текущий индекс в QPersistentModelIndex
Название: Re: QSqlTableModel тормозит когда включен сортинг Отправлено: Авварон от Март 10, 2011, 17:34 хм... а не получится что как раз номера строки/колонки сохранятся? мне-то все ж таки содержимое надо сохранить.
Название: Re: QSqlTableModel тормозит когда включен сортинг Отправлено: asvil от Март 10, 2011, 18:17 нужно отловить сигнал начала сортировки (aboutToBeReset).
затем сохранить primaryKey. затем отловить сигнал о конце сортировки (reset). пройтись по всем загруженным записям и найти нужную. сделать select для selection модели. ах да, еще нужно номер колонки сохранить. Название: Re: QSqlTableModel тормозит когда включен сортинг Отправлено: twp от Март 10, 2011, 18:17 уже точно не помню, но вроде в одном проекте использовался такой способ. Вроде модель отслеживает изменения иобновляет QPersistentModelIndex, А проверка не дала ответа, подходит ли такой способ?
Название: Re: QSqlTableModel тормозит когда включен сортинг Отправлено: Авварон от Март 10, 2011, 18:36 Пока не тестил, завтра может попробую... Сейчас другие дела есть, профилирую скорость работы разных моделей:)
|