Russian Qt Forum
Ноябрь 26, 2024, 06:56 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTableView порядок сортировки  (Прочитано 2107 раз)
qwyllum
Гость
« : Июнь 14, 2013, 21:35 »

Доброго времени суток! Сделал сортировку QTableView, но сортируемые элементы выглядят так: 1,11,12,13,2,3,4..... а нужно 1,2,3,4...10,11,12. Можно ли как-то исправить это? В какую сторону копать? Спасибо большое.
Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #1 : Июнь 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 ) .
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #2 : Июнь 15, 2013, 14:01 »

2 варианта:
1. Навешиваешь QSortFilterProxyModel с перегруженной lessThan()
2. Если используешь QStandardItemModel, то через QStandardItemModel::setItemPrototype() задаёшь производный от QStandardItem с перегруженным operator<.
При сравнении строк используй что-то вроде strnatcmp.
Имхо, 2-й вариант для QStandardItemModel предпочтительнее.
Записан

Qt 5.11/4.8.7 (X11/Win)
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.179 секунд. Запросов: 22.