Russian Qt Forum
Ноябрь 24, 2024, 00:52
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Model-View (MV)
>
Количество знаков числа типа double в QTableView
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Количество знаков числа типа double в QTableView (Прочитано 6019 раз)
shar
Гость
Количество знаков числа типа double в QTableView
«
:
Апрель 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
Гость
Re: Количество знаков числа типа double в QTableView
«
Ответ #1 :
Апрель 19, 2011, 10:42 »
А если переопределить в модели метод
virtual QVariant data ( const QModelIndex & index, int role )
для случая role == Qt::DisplayRole
Записан
shar
Гость
Re: Количество знаков числа типа double в QTableView
«
Ответ #2 :
Апрель 19, 2011, 10:46 »
Цитата: zenden от Апрель 19, 2011, 10:42
А если переопределить в модели метод
virtual QVariant data ( const QModelIndex & index, int role )
для случая role == Qt::DisplayRole
В общем-то возможно, даже сортировка идет по роли Qt::EditRole, но как-то теряется тип переменной в этом случае и нужно будет искать по всему проекту использование Qt::DisplayRole чего очень не хочется ))). Буду рад выслушать другие варианты
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: Количество знаков числа типа double в QTableView
«
Ответ #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
Гость
Re: Количество знаков числа типа double в QTableView
«
Ответ #4 :
Апрель 19, 2011, 12:35 »
Цитата: GreatSnake от Апрель 19, 2011, 12:24
Перегрузи
Цитировать
QString QStyledItemDelegate::displayText ( const QVariant & value, const QLocale & locale ) const [virtual]
Да, но потом нужно найти все QTableView в проекте и задать им новый делегат. Хочется решения в пару строк, но так было применено ко всему проекту сразу. Доволно удобно с редакторами в делегатах, можно парой строк переопределить редактор по умолчания для определенного типа, а вот для отображения такое не канает. (((
«
Последнее редактирование: Апрель 19, 2011, 14:45 от shar
»
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: Количество знаков числа типа double в QTableView
«
Ответ #5 :
Апрель 19, 2011, 12:45 »
Цитировать
Да, но потом нужно найти все QTreeView в проекте и задать им новый делегат. Хочется решения в пару строк, но так было применено ко всему проекту сразу. Доволно удобно с редакторами в делегатах, можно парой строк переопределить редактор по умолчания для определенного типа, а вот для отображения такое не канает. (((
Ну дык и перегружайте displayText() в этом же делегате. Не понимаю в чём проблема
Записан
Qt 5.11/4.8.7 (X11/Win)
shar
Гость
Re: Количество знаков числа типа double в QTableView
«
Ответ #6 :
Апрель 19, 2011, 13:04 »
Цитата: GreatSnake от Апрель 19, 2011, 12:45
Ну дык и перегружайте displayText() в этом же делегате. Не понимаю в чём проблема
Итак я перегрузил displayText и получил новый класс MyItemDelegate у меня есть проект в котором около 400 классов, мне нужно в каждом классе где есть QTreeView вызвать метод setItemDelegate, не хватает механизма типа QApplication::setDefaultItemDelegate.
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: Количество знаков числа типа double в QTableView
«
Ответ #7 :
Апрель 19, 2011, 14:20 »
Отнаследуйся от QTreeView и прогонись sed-om - делов-то.
Записан
Qt 5.11/4.8.7 (X11/Win)
shar
Гость
Re: Количество знаков числа типа double в QTableView
«
Ответ #8 :
Апрель 19, 2011, 14:30 »
Цитата: GreatSnake от Апрель 19, 2011, 14:20
Отнаследуйся от QTreeView и прогонись sed-om - делов-то.
Некрасиво... Вдруг кто-нибудь из пристутствующих знает механизм более красивый. Вот была бы возможность наследования QLocale вернее перегрузки функций, и почему нет такой возможности ((.
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: Количество знаков числа типа double в QTableView
«
Ответ #9 :
Апрель 19, 2011, 14:51 »
Цитировать
Некрасиво...
Почему? Как раз красиво будет иметь свой корпоративный QTreeView со всеми project-specific обвязками.
Цитировать
Вдруг кто-нибудь из пристутствующих знает механизм более красивый.
Навряд ли(
Цитировать
Вот была бы возможность наследования QLocale вернее перегрузки функций, и почему нет такой возможности ((.
Я думаю не вы один уже ни раз прокляли троллей за то, что те поленились вставить virtual.
Записан
Qt 5.11/4.8.7 (X11/Win)
shar
Гость
Re: Количество знаков числа типа double в QTableView
«
Ответ #10 :
Апрель 19, 2011, 16:16 »
Цитировать
Почему? Как раз красиво будет иметь свой корпоративный QTreeView со всеми project-specific обвязками.
Хм. Пожалуй соглашусь, только надо теперь всем рассказать чтобы не забывали Promote делать, а лучше как-нить автоматом отслеживать.
Цитировать
Я думаю не вы один уже ни раз прокляли троллей за то, что те поленились вставить virtual.
Может на это есть свои причины, я во всяком случае их не вижу, надо побаловаться...
Спасибо за отклик
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...