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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Количество знаков числа типа double в QTableView  (Прочитано 6007 раз)
shar
Гость
« : Апрель 19, 2011, 10:32 »

Есть относительно не маленький проект, изначально написанный на Qt 4.3.1. При отображении чисел типа double в QTableView показываются 6 цифр, тогда решено было довольно тупо - исправили
Код:
QLocale::toString ( double i, char f = 'g', int prec = 12 )
Сейчас принято решение перхода на Qt 4.7.2 и вот тут снова эта проблема. Снова исправлять QLocale не хочется, копания в исходном коде показали, что вызов идет из
Код:
QStyledItemDelegate::displayText
Можно отнаследоваться и переопределить этот метод, но тогда нужно всегда и везде писать пару строк, что не очень красиво. Много советов преобразовать еще в модели данные к строке, но тогда сломается сортировка. По мне так удобно было бы сделать потомка QLocale и установить его, но у QLocale нет виртуальных методов. Вопрос в том как сделать это наиболее правильно.
Записан
zenden
Гость
« Ответ #1 : Апрель 19, 2011, 10:42 »

А если переопределить в модели метод
virtual QVariant    data ( const QModelIndex & index, int role ) 
для случая role == Qt::DisplayRole
Записан
shar
Гость
« Ответ #2 : Апрель 19, 2011, 10:46 »

А если переопределить в модели метод
virtual QVariant    data ( const QModelIndex & index, int role ) 
для случая role == Qt::DisplayRole

В общем-то возможно, даже сортировка идет по роли Qt::EditRole, но как-то теряется тип переменной в этом случае и нужно будет искать по всему проекту использование Qt::DisplayRole чего очень не хочется ))). Буду рад выслушать другие варианты
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Апрель 19, 2011, 12:24 »

Перегрузи
Цитировать
QString QStyledItemDelegate::displayText ( const QVariant & value, const QLocale & locale ) const [virtual]
Записан

Qt 5.11/4.8.7 (X11/Win)
shar
Гость
« Ответ #4 : Апрель 19, 2011, 12:35 »

Перегрузи
Цитировать
QString QStyledItemDelegate::displayText ( const QVariant & value, const QLocale & locale ) const [virtual]
Да, но потом нужно найти все QTableView в проекте и задать им новый делегат. Хочется решения в пару строк, но так было применено ко всему проекту сразу. Доволно удобно с редакторами в делегатах, можно парой строк переопределить редактор по умолчания для определенного типа, а вот для отображения такое не канает. (((
« Последнее редактирование: Апрель 19, 2011, 14:45 от shar » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #5 : Апрель 19, 2011, 12:45 »

Цитировать
Да, но потом нужно найти все QTreeView в проекте и задать им новый делегат. Хочется решения в пару строк, но так было применено ко всему проекту сразу. Доволно удобно с редакторами в делегатах, можно парой строк переопределить редактор по умолчания для определенного типа, а вот для отображения такое не канает. (((
Ну дык и перегружайте displayText() в этом же делегате. Не понимаю в чём проблема  Непонимающий
Записан

Qt 5.11/4.8.7 (X11/Win)
shar
Гость
« Ответ #6 : Апрель 19, 2011, 13:04 »

Ну дык и перегружайте displayText() в этом же делегате. Не понимаю в чём проблема  Непонимающий
Итак я перегрузил displayText и получил новый класс MyItemDelegate у меня есть проект в котором около 400 классов, мне нужно в каждом классе где есть QTreeView вызвать метод setItemDelegate, не хватает механизма типа QApplication::setDefaultItemDelegate.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #7 : Апрель 19, 2011, 14:20 »

Отнаследуйся от QTreeView и прогонись sed-om - делов-то.
Записан

Qt 5.11/4.8.7 (X11/Win)
shar
Гость
« Ответ #8 : Апрель 19, 2011, 14:30 »

Отнаследуйся от QTreeView и прогонись sed-om - делов-то.

Некрасиво... Вдруг кто-нибудь из пристутствующих знает механизм более красивый. Вот была бы возможность наследования QLocale вернее перегрузки функций, и почему нет такой возможности ((.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #9 : Апрель 19, 2011, 14:51 »

Цитировать
Некрасиво...
Почему? Как раз красиво будет иметь свой корпоративный QTreeView со всеми project-specific обвязками.
Цитировать
Вдруг кто-нибудь из пристутствующих знает механизм более красивый.
Навряд ли(
Цитировать
Вот была бы возможность наследования QLocale вернее перегрузки функций, и почему нет такой возможности ((.
Я думаю не вы один уже ни раз прокляли троллей за то, что те поленились вставить virtual.
Записан

Qt 5.11/4.8.7 (X11/Win)
shar
Гость
« Ответ #10 : Апрель 19, 2011, 16:16 »

Цитировать
Почему? Как раз красиво будет иметь свой корпоративный QTreeView со всеми project-specific обвязками.
Хм. Пожалуй соглашусь, только надо теперь всем рассказать чтобы не забывали Promote делать, а лучше как-нить автоматом отслеживать.
Цитировать
Я думаю не вы один уже ни раз прокляли троллей за то, что те поленились вставить virtual.
Может на это есть свои причины, я во всяком случае их не вижу, надо побаловаться...
Спасибо за отклик
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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