Russian Qt Forum

Qt => Вопросы новичков => Тема начата: qwyllum от Июнь 14, 2013, 21:35



Название: QTableView порядок сортировки
Отправлено: qwyllum от Июнь 14, 2013, 21:35
Доброго времени суток! Сделал сортировку QTableView, но сортируемые элементы выглядят так: 1,11,12,13,2,3,4..... а нужно 1,2,3,4...10,11,12. Можно ли как-то исправить это? В какую сторону копать? Спасибо большое.


Название: Re: QTableView порядок сортировки
Отправлено: Kurles от Июнь 14, 2013, 23:12
Доброго времени суток! Сделал сортировку QTableView, но сортируемые элементы выглядят так: 1,11,12,13,2,3,4..... а нужно 1,2,3,4...10,11,12. Можно ли как-то исправить это? В какую сторону копать? Спасибо большое.
Cудя по документации надо переопределять в модели виртуальный метод void QAbstractItemModel::sort ( int column, Qt::SortOrder order = Qt::AscendingOrder ) .


Название: Re: QTableView порядок сортировки
Отправлено: GreatSnake от Июнь 15, 2013, 14:01
2 варианта:
1. Навешиваешь QSortFilterProxyModel с перегруженной lessThan()
2. Если используешь QStandardItemModel, то через QStandardItemModel::setItemPrototype() задаёшь производный от QStandardItem с перегруженным operator<.
При сравнении строк используй что-то вроде strnatcmp (http://the-tower-of-babel.googlecode.com/svn/trunk/src/strnatcmp.c).
Имхо, 2-й вариант для QStandardItemModel предпочтительнее.