Название: сортировка по столбцу в QTableView Отправлено: Natalie от Декабрь 26, 2006, 14:14 Есть QTableView, но использует модель MyModel.
Необходимо произвести сортировку таблицы по какому-нибудь стробцу, но так, чтобы порядок элементов в моделе не изменился (то есть, чтобы изменился порядок отображения элементов). Стандартная сортировка sortByColumn(int i) не работает. Нашла здесь на форуме, что можно использовать QSqlQueryModel, но у меня итак уже используется модель MyModel. А в QSqlQueryModel не такого: queryModel->setSourceModel(myModel); Думала, будет работать функци rowMoved(row, oldIndex, newIndex), но ничего не происходит :( Помогите, пожалуйста, как мне добиться желаемого результата! Название: сортировка по столбцу в QTableView Отправлено: Alexandr Az от Декабрь 26, 2006, 15:35 Если ответит в шутку - то никак.
Если ответить в серьёз - то будет тоже, что и в шутку :) Да ладно, перестаньте, что нам, помяти жалко! if (Памяти не жалко :) ) { Если название модели опрадывает её название (т.е она действительно Ваша), то прийдётся тупо копировать модель и её данные и ту сортировать. Если нужно сохранить взаимосвязь между моделями, тогда прийдётся ввести ещё один итем в модель, скажем отвечающий за номер строк. QSqlQueryModel может изменить конечно ситуацию. Для этого мы создаём базу данных в памяти (отличнейшим образом подходит SqlLite) и из неё делаем выборку. Итого получаем - один источник данных - sqllite и куча моделей, отсортированых как вам надо. Вариант решать Вам, мыж не знаем что у вас за данные и какая такая дикая модель.... Кстати, насчёт памяти - второй вариант будет менее требователен к ресурсам, т.к. мы не будем хранить все данные выборки из базы данных, а только тех, что просматриваем (с ужасом, я надеюсь они реализовали двунаправленые курсоры в sqllite!!!!) } Эка сказать, не шутка чай, девушка кутешница. А звучит! Название: Re: сортировка по столбцу в QTableView Отправлено: itan от Декабрь 26, 2006, 17:20 Вообще-то для таких целей используется QSortFilterProxyModel
Код:
Название: сортировка по столбцу в QTableView Отправлено: Natalie от Декабрь 27, 2006, 03:19 itan, проблема в том, что я использую не QTreeView, а QTableView. А с QTableView QSortFilterProxyModel не работает, во всяком случае, функция lessThan(const QModelIndex & left, const QModelIndex & right) не вызывается :(
Название: сортировка по столбцу в QTableView Отправлено: Tonal от Декабрь 27, 2006, 07:55 А сортировку по столбцу собственно вызывал - proxyModel->sort(col)?
Название: сортировка по столбцу в QTableView Отправлено: itan от Декабрь 27, 2006, 09:48 Цитата: "Natalie" itan, проблема в том, что я использую не QTreeView, а QTableView. А с QTableView QSortFilterProxyModel не работает, во всяком случае, функция lessThan(const QModelIndex & left, const QModelIndex & right) не вызывается :( Какая версия QT? В 4.2 есть void QTableView::setSortingEnabled ( bool enable ), надо установить ее в true. Название: сортировка по столбцу в QTableView Отправлено: Natalie от Декабрь 27, 2006, 12:35 У меня версия 4.1.4, и там нет такой функции :(
Название: сортировка по столбцу в QTableView Отправлено: itan от Декабрь 27, 2006, 14:26 Цитата: "Natalie" У меня версия 4.1.4, и там нет такой функции :( Вот, посмотри, здесь похожая проблема: http://www.qtcentre.org/forum/f-qt-programming-2/t-qsortfilterproxymodellessthan-method-doesnt-work-4270.html Название: сортировка по столбцу в QTableView Отправлено: Natalie от Декабрь 28, 2006, 13:45 Большое спасибо тебе, itan!!!!
Все заработало!! :) |