Russian Qt Forum

Qt => Model-View (MV) => Тема начата: shar от Апрель 19, 2011, 10:32



Название: Количество знаков числа типа double в QTableView
Отправлено: 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 нет виртуальных методов. Вопрос в том как сделать это наиболее правильно.


Название: Re: Количество знаков числа типа double в QTableView
Отправлено: zenden от Апрель 19, 2011, 10:42
А если переопределить в модели метод
virtual QVariant    data ( const QModelIndex & index, int role ) 
для случая role == Qt::DisplayRole


Название: Re: Количество знаков числа типа double в QTableView
Отправлено: shar от Апрель 19, 2011, 10:46
А если переопределить в модели метод
virtual QVariant    data ( const QModelIndex & index, int role ) 
для случая role == Qt::DisplayRole

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


Название: Re: Количество знаков числа типа double в QTableView
Отправлено: GreatSnake от Апрель 19, 2011, 12:24
Перегрузи
Цитировать
QString QStyledItemDelegate::displayText ( const QVariant & value, const QLocale & locale ) const [virtual]


Название: Re: Количество знаков числа типа double в QTableView
Отправлено: shar от Апрель 19, 2011, 12:35
Перегрузи
Цитировать
QString QStyledItemDelegate::displayText ( const QVariant & value, const QLocale & locale ) const [virtual]
Да, но потом нужно найти все QTableView в проекте и задать им новый делегат. Хочется решения в пару строк, но так было применено ко всему проекту сразу. Доволно удобно с редакторами в делегатах, можно парой строк переопределить редактор по умолчания для определенного типа, а вот для отображения такое не канает. (((


Название: Re: Количество знаков числа типа double в QTableView
Отправлено: GreatSnake от Апрель 19, 2011, 12:45
Цитировать
Да, но потом нужно найти все QTreeView в проекте и задать им новый делегат. Хочется решения в пару строк, но так было применено ко всему проекту сразу. Доволно удобно с редакторами в делегатах, можно парой строк переопределить редактор по умолчания для определенного типа, а вот для отображения такое не канает. (((
Ну дык и перегружайте displayText() в этом же делегате. Не понимаю в чём проблема  ???


Название: Re: Количество знаков числа типа double в QTableView
Отправлено: shar от Апрель 19, 2011, 13:04
Ну дык и перегружайте displayText() в этом же делегате. Не понимаю в чём проблема  ???
Итак я перегрузил displayText и получил новый класс MyItemDelegate у меня есть проект в котором около 400 классов, мне нужно в каждом классе где есть QTreeView вызвать метод setItemDelegate, не хватает механизма типа QApplication::setDefaultItemDelegate.


Название: Re: Количество знаков числа типа double в QTableView
Отправлено: GreatSnake от Апрель 19, 2011, 14:20
Отнаследуйся от QTreeView и прогонись sed-om - делов-то.


Название: Re: Количество знаков числа типа double в QTableView
Отправлено: shar от Апрель 19, 2011, 14:30
Отнаследуйся от QTreeView и прогонись sed-om - делов-то.

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


Название: Re: Количество знаков числа типа double в QTableView
Отправлено: GreatSnake от Апрель 19, 2011, 14:51
Цитировать
Некрасиво...
Почему? Как раз красиво будет иметь свой корпоративный QTreeView со всеми project-specific обвязками.
Цитировать
Вдруг кто-нибудь из пристутствующих знает механизм более красивый.
Навряд ли(
Цитировать
Вот была бы возможность наследования QLocale вернее перегрузки функций, и почему нет такой возможности ((.
Я думаю не вы один уже ни раз прокляли троллей за то, что те поленились вставить virtual.


Название: Re: Количество знаков числа типа double в QTableView
Отправлено: shar от Апрель 19, 2011, 16:16
Цитировать
Почему? Как раз красиво будет иметь свой корпоративный QTreeView со всеми project-specific обвязками.
Хм. Пожалуй соглашусь, только надо теперь всем рассказать чтобы не забывали Promote делать, а лучше как-нить автоматом отслеживать.
Цитировать
Я думаю не вы один уже ни раз прокляли троллей за то, что те поленились вставить virtual.
Может на это есть свои причины, я во всяком случае их не вижу, надо побаловаться...
Спасибо за отклик