crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Грабли от QStandardItem., Мысли вслух.
Анна
  опции профиля:
сообщение 3.8.2010, 14:08
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 276
Регистрация: 22.5.2008
Из: Зеленоград
Пользователь №: 181

Спасибо сказали: 30 раз(а)




Репутация:   4  


Хороший такой классик 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
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 12.12.2024, 12:52