Russian Qt Forum
Ноябрь 23, 2024, 23:26
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Базы данных
>
QSqlTableModel тормозит когда включен сортинг
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: QSqlTableModel тормозит когда включен сортинг (Прочитано 9014 раз)
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
QSqlTableModel тормозит когда включен сортинг
«
:
Март 05, 2011, 03:01 »
Собсно сабж.
Есть таблица 20000*16 полей. Очень сильно тормозит fetchMore. Зафетчить всю таблицу не получается.
Кроме того, сильно тормозит при использовании ползунка скролла, видимо связано с тем, что скроллится оно плавно и data() вызывается на все промежуточные стейты.
Записан
Kolobok
Гость
Re: QSqlTableModel тормозит когда включен сортинг
«
Ответ #1 :
Март 05, 2011, 12:10 »
Поле, по которому сортируется, индексировано?
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: QSqlTableModel тормозит когда включен сортинг
«
Ответ #2 :
Март 05, 2011, 12:36 »
Не. Поможет?)
Записан
Kolobok
Гость
Re: QSqlTableModel тормозит когда включен сортинг
«
Ответ #3 :
Март 05, 2011, 13:14 »
Должно помочь.
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: QSqlTableModel тормозит когда включен сортинг
«
Ответ #4 :
Март 05, 2011, 15:26 »
Не помогло. Вроде сортировка стала быстрее, но тем не менее лаги при скролле и фетче остались такие же. Есть идея что тормозит именно data() при выборе из базы. Что делать?
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: QSqlTableModel тормозит когда включен сортинг
«
Ответ #5 :
Март 05, 2011, 15:34 »
А тормозит постоянно или пока данные не подтянет?
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: QSqlTableModel тормозит когда включен сортинг
«
Ответ #6 :
Март 05, 2011, 15:40 »
Именно пока не подтянет данные. Но вот как их подтягивать? (пробовал scrollToBottom - спасает, но до пересортировки:))
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: QSqlTableModel тормозит когда включен сортинг
«
Ответ #7 :
Март 05, 2011, 15:51 »
Код
C++ (Qt)
while
(
model
->
canFetchMore
(
)
)
{
model
->
fetchMore
(
)
;
}
Это делаешь после селекта и будет тебе счастье.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: QSqlTableModel тормозит когда включен сортинг
«
Ответ #8 :
Март 05, 2011, 17:12 »
Нет не делает. Она не грузит данные по фетчу, только количество записей во вью меняет (ползунок меняется)
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: QSqlTableModel тормозит когда включен сортинг
«
Ответ #9 :
Март 05, 2011, 17:18 »
Хм. Странно. У меня работало.
Тогда пиши свою модель.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: QSqlTableModel тормозит когда включен сортинг
«
Ответ #10 :
Март 05, 2011, 18:02 »
И чо я там сделаю?)
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: QSqlTableModel тормозит когда включен сортинг
«
Ответ #11 :
Март 05, 2011, 19:44 »
Проблема же в том, что тупит именно вьюха, когда забирает данные.
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: QSqlTableModel тормозит когда включен сортинг
«
Ответ #12 :
Март 06, 2011, 02:05 »
Хм, заюзал тейбл вью вместо три вью, все летать стало:) фетч за 0.2 сек делается
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: QSqlTableModel тормозит когда включен сортинг
«
Ответ #13 :
Март 10, 2011, 11:40 »
Так, ну ладно, еще куча мега вопросов от меня. Можно ли сделать чтобы при сорте сохранялось выделение? (модель-то перестраивается, айайай). Ну и еще мега вопрос - 0.2 сек - это нормально или можно улучшить? (если хранить все данные в памяти и тупо делать тейблмодель по этой памяти, то сортируется мгновенно (при помощи QSortFilterProxyModel))
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: QSqlTableModel тормозит когда включен сортинг
«
Ответ #14 :
Март 10, 2011, 16:18 »
Цитировать
Можно ли сделать чтобы при сорте сохранялось выделение? (модель-то перестраивается, айайай)
Да вроде всё просто)
Перегружаешь Q*Model::sort(), перед вызовом базового sort() запоминаешь QAbstractItemView::currentIndex(), после восстанавливаешь.
Записан
Qt 5.11/4.8.7 (X11/Win)
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...