![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Хаски |
![]() ![]()
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 18.10.2012 Пользователь №: 3567 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Здравствуйте!
Я создаю модель, связанную с таблицей в БД на SQlite и вывожу ее в tableView:
Класс QSqlRelationalTableModel реализован так, что имеет место так называемая "ленивая загрузка" данных. При работе с таблицей подгружается по 255 записей, остальные - по мере прокрутки ползунка. Мне это не нужно, мне нужно, чтобы загружались сразу все данные (память позволяет, объем базы не слишком велик, а вызванные этим неудобства интерфейса мешают). Во всех методах своего приложения я использую код "while(model->canFetchMore()) model->fetchMore();", и все работает так, как надо - в tableView загружается все содержимое таблицы из БД. Однако, мне также необходима возможность редактирования ячеек в tableView с синхронизацией с БД (стратегия редактирования - OnFieldChange). При этом, когда пользователь редактирует ячейку из ряда с номером больше 255, после завершения ее редактирования таблица перезагружается из БД, и вновь лишь первые 255 строк. В результате tableview перескакивает к 255 строке, что очень неудобно. Например, если мне нужно быстро отредактировать несколько строк в таблице под номерами 500, 501, 502, у каждой по несколько полей, это не получится сделать быстро и удобно из-за постоянного перескакивания на 255 строку. Вопрос: как мне изменить поведение tableview, чтобы после заверешения редактирования ячейки в таблице загружалась вся таблица? Или как изменить этот параметр, дающий ограничение в 255 строк? |
|
|
RazrFalcon |
![]()
Сообщение
#2
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: ![]() ![]() ![]() |
Я вручную SQL запросы отсылал.
Так проще и быстрее, чем через Qt. |
|
|
Litkevich Yuriy |
![]()
Сообщение
#3
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Хаски, нужно сделать наследника от модели и в её методах вызывать fetchMore()
|
|
|
Хаски |
![]()
Сообщение
#4
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 18.10.2012 Пользователь №: 3567 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Я наследовал свой класс QSqlRelationalTableModelExtraFetch от QSqlRelationalTableModel и переопределили в нем метод select() следующим образом:
|
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 18.2.2025, 6:14 |