Название: Сортировка Отправлено: ecspertiza от Сентябрь 01, 2009, 08:31 Граждане программисты помогите разобраться с нубской проблемой, я в упор не могу понять как сделать сортировку, посмотрел демку стандартную masterdetail , насколько я понял там сортировка просто включается строчкой QTableView::setSortingEnabled(true); Но видимо нужно ещё что то сделать ибо у меня так не работает, почитал книжку Бланшета раздел про БД но там тоже ничего не нашёл. В качестве модели использую QSqlQueryModel.
Название: Re: Сортировка Отправлено: BRE от Сентябрь 01, 2009, 09:10 Почитай про SQL-запросы, в частности про ORDER BY:
SELECT ... ORDER BY ...; Название: Re: Сортировка Отправлено: ecspertiza от Сентябрь 01, 2009, 09:41 Не ну то что так можно решить это мне понятно, но опять же в демке masterdetail никаких лишних запросов не создаётся, ну или я по крайне мере не нашел где это происходит, я просто думал что это можно решить как то на уровне представления, ну или модели.
Название: Re: Сортировка Отправлено: BRE от Сентябрь 01, 2009, 10:08 Не ну то что так можно решить это мне понятно, но опять же в демке masterdetail никаких лишних запросов не создаётся, ну или я по крайне мере не нашел где это происходит, я просто думал что это можно решить как то на уровне представления, ну или модели. В masterdetail используется модель QSqlRelationalTableModel, которая для сортировки сама формирует SQL-запрос (добавляя в него ORDER BY). Ты же используешь QSqlQueryModel, который полагается на тебя.Название: Re: Сортировка Отправлено: ecspertiza от Сентябрь 01, 2009, 10:27 Понятно этого я и боялся, спасибо за ответ.
Название: Re: Сортировка Отправлено: voronElf от Сентябрь 01, 2009, 10:29 Для сортировок вроде как подходит QSortFilterProxyModel. Только не знаю точно как сработает на больших объемах данных, QSqlQueryModel частями данные из БД тягает и QSortFilterProxyModel может только выбранные данные отсортировать, эт потестить нада где-то на 1000 записей.
Название: Re: Сортировка Отправлено: ecspertiza от Сентябрь 01, 2009, 11:32 voronElf, +1, то что доктор прописал, спасибо.
|