Russian Qt Forum

Qt => Model-View (MV) => Тема начата: Majestio от Апрель 26, 2013, 08:27



Название: Позиционирование в QTableView & QSqlQueryModel
Отправлено: Majestio от Апрель 26, 2013, 08:27
Ситуация в следующем:

Есть форма с QTableView, которая отображает данные запроса, используя QSqlQueryModel. Мы позиционировались на строку с данными, например, Поле "Id" = 5, ... + остальные поля. Потом применили фильтр (или сортировку), задав для QSqlQueryModel новый запрос. Таблица перечиталась. Как о5 позиционировать селект строки на старую позицию (с Поле "Id" = 5)?

Использую PostgreSQL 9.2.1, Qt 4.8.4


Название: Re: Позиционирование в QTableView & QSqlQueryModel
Отправлено: VPS от Апрель 26, 2013, 13:32
Можно попробовать один раз написать запрос на выборку данных из таблицы, а уже потом манипулировать данными (сортировка или фильтрация) через объект класса "QSortFilterProxyModel", который связать связать с исходной моделью "QSqlQueryModel". Тогда можно перед манипуляциями сохранять индекс выделенного элемента, а после - переходить к нему обратно  (если он виден в представлении).

П.С.: в зависимости от задачи это может и не подойти...


Название: Re: Позиционирование в QTableView & QSqlQueryModel
Отправлено: Majestio от Апрель 27, 2013, 01:41
Можно попробовать один раз написать запрос на выборку данных из таблицы, а уже потом манипулировать данными (сортировка или фильтрация) через объект класса "QSortFilterProxyModel", который связать связать с исходной моделью "QSqlQueryModel". Тогда можно перед манипуляциями сохранять индекс выделенного элемента, а после - переходить к нему обратно  (если он виден в представлении).

П.С.: в зависимости от задачи это может и не подойти...

"Беда" в том, что фильтрацию я намереваюсь делать на стороне сервера. С точки зрения производительности на клиента это возложить никак не могу. Будут скорее регэкспы по всем полям.