![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Анна |
![]()
Сообщение
#1
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 276 Регистрация: 22.5.2008 Из: Зеленоград Пользователь №: 181 Спасибо сказали: 30 раз(а) Репутация: ![]() ![]() ![]() |
Хороший такой классик QStandardItem, но есть непонятно зачем встроенные габли. А именно в конструктор передается на QVariant, а QString. Из-за этого итемы, содержащие числа, сортируются в слованом порядке, а менно: сперва сви числа,начинающиеся с "1", потом с "2" и т.д.
Обойти можно легко. Используем setData(QVariant( наше_число), Qt::DisplayRole); Причём, если вы укажете Qt::EditRole, а для модели setSortRole(Qt::EditRole), то это не поможет, потому что в глубине кода перед самой сортировкой стоит проверка, если sortRole == Qt::EditRole, то сортировка проводится для данных с ролью Qt::DisplayRole , а там везде QString. Почему пользователю не позволяют сортировать по Qt::EditRole (вернее, почему его так бессовестно обманывают?), непонятно. И кастрированный до иконки и строки набор данных в конструкторе тоже удручает. Ну, почему бы не сделать QVariant вместо QString? В общем, ложечки нашлись, но осадочек остался... ----------------------- Если редактируешь итем в столбце, по которому сделана сортировка, после окончания редактирования сортировать надо вручную (т.е. два раза кликнуть на шапке, чтобы снова получить правильный порядок). Вызов sortByColumn() не поможет. Сообщение отредактировал Анна - 4.8.2010, 11:50 |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 17.6.2025, 18:59 |