QSqlTableModel загружает не все записи, Подгрузка происходит при скролировании |
Здравствуйте, гость ( Вход | Регистрация )
QSqlTableModel загружает не все записи, Подгрузка происходит при скролировании |
FantasyOr |
16.1.2012, 16:13
Сообщение
#1
|
Студент Группа: Участник Сообщений: 75 Регистрация: 13.8.2010 Пользователь №: 1956 Спасибо сказали: 4 раз(а) Репутация: 0 |
Здравствуйте.
Описываю ситуацию: Есть таблица в БД в ней 100500 тыщ записей. Просмотр этой таблицы через связку QSqlTableModel-> QxtSortFilterProxyModel-> QTableView . Сделал панельку множественного фильтра(QTableView с одной строкой и делегатом QComboBox ) и разместил сверху шапки таблицы. QComboBox'ы заполняю из QxtSortFilterProxyModel и всё круто, но QSqlTableModel загружает всего 256 строк, остальные подгружаются только по мере скроллирования таблицы, соответственно и данные в QComboBox'ах не полные. Подскажите как можно приказать QSqlTableModel загрузить сразу все записи. Понимаю, что при 100500 тыщах записей будет лагать, но тут я уже придумал схему: можно в другом потоке постепенно загружать все данные и заполнять ими QComboBox'ы, всё равно пользователь не кинется в первую секунду сортировать по всем колонкам одновременно, это уже не важно. Повторюсь главное заставить QSqlTableModel загрузить сразу все записи, даже если нужно будет наследоваться не беда. Спасибо. Буду очень благодарен за помощь. |
|
|
512es |
16.1.2012, 17:14
Сообщение
#2
|
Участник Группа: Участник Сообщений: 135 Регистрация: 31.10.2008 Пользователь №: 407 Спасибо сказали: 5 раз(а) Репутация: 0 |
База sqlite?
QSqlQueryModel умеет делать это так: while (canFetchMore()) fetchMore(); а вот QSqlTableModel что то не вижу такого метода.. |
|
|
FantasyOr |
17.1.2012, 8:03
Сообщение
#3
|
Студент Группа: Участник Сообщений: 75 Регистрация: 13.8.2010 Пользователь №: 1956 Спасибо сказали: 4 раз(а) Репутация: 0 |
нет базы Oracle и MS.
попробую fetchMore и отпишусь. Сообщение отредактировал FantasyOr - 17.1.2012, 8:05 |
|
|
FantasyOr |
18.1.2012, 16:41
Сообщение
#4
|
Студент Группа: Участник Сообщений: 75 Регистрация: 13.8.2010 Пользователь №: 1956 Спасибо сказали: 4 раз(а) Репутация: 0 |
Да всё шикарно работает:
главное запомнить, что модель не потоко-безопасна.
ран потока, в приципе кроме него только передача текста запроса
почему TTreeTableModel когда писал о QTableView: переопределён метод data так, что возвращает "" у DisplayRole if ( cell(i, x) == cell(i-1, x) ) т.о. если колонка затирания первая, то получается как бы дерево: Да всё шикарно работает: главное запомнить, что модель не потоко-безопасна.
ран потока, в приципе кроме него только передача текста запроса
почему TTreeTableModel когда писал о QTableView: переопределён метод data так, что возвращает "" у DisplayRole if ( cell(i, x) == cell(i-1, x) ) т.о. если колонка затирания первая, то получается как бы дерево: |
|
|
Текстовая версия | Сейчас: 7.11.2024, 5:42 |