Russian Qt Forum
Июня 30, 2025, 18:09 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: локализация для QString::number [решено]  (Прочитано 11044 раз)
daimon
Гость
« : Июня 10, 2011, 22:48 »

есть число типа 1.12
как заставить QString::number(1.12,'f',6) возвращать строку с числом, где десятичный сепаратор запятая ("1,12")?

или проще как заставить QTableWidgetItem c QtableWidget выводить числа по типу функции number (округление), по-умолчанию там стоит тип g, точность 6 (мне эти параметри нужно менять). спс

есть самопальная ячейка возвращает QVariant
« Последнее редактирование: Июня 11, 2011, 01:17 от daimon » Записан
alexman
Гость
« Ответ #1 : Июня 10, 2011, 23:36 »

Для отображения числа согласно локали можно сделать так: QString("%L1").arg(1.12, 0, 'f')
Записан
daimon
Гость
« Ответ #2 : Июня 11, 2011, 01:16 »

Для отображения числа согласно локали можно сделать так: QString("%L1").arg(1.12, 0, 'f')
спс
я попробовал просто метод класса локали toString, так как локаль ещё нужно было настроить - убрать разделители групп
« Последнее редактирование: Июня 11, 2011, 02:13 от daimon » Записан
ChromVanadium
Гость
« Ответ #3 : Июня 11, 2011, 12:54 »

Когда мне нужно double сделать в текстовую строку с разделителем точкой делаю так:
someString = QString::number(someDoubleNumber,'f',2).replace(",",".");
Записан
daimon
Гость
« Ответ #4 : Июня 11, 2011, 14:16 »

Когда мне нужно double сделать в текстовую строку с разделителем точкой делаю так:
someString = QString::number(someDoubleNumber,'f',2).replace(",",".");
тогда на поставить хитрое условие - ведь бывает запятую на точку нужно меняет, а бывает наоборот
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #5 : Июня 11, 2011, 15:41 »

Используйте
QString QLocale::toString ( double i, char f, int prec ) const;
от нужной локали.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #6 : Июня 11, 2011, 15:51 »

может кому пригодится - хак для определения текущего разделителя дробной части в системе:
Код
C++ (Qt)
QChar separator = QString::number(0.1).at(1);
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
BRE
Гость
« Ответ #7 : Июня 11, 2011, 15:59 »

может кому пригодится - хак для определения текущего разделителя дробной части в системе:
Лучше почитать про QLocale.  Улыбающийся
Записан
daimon
Гость
« Ответ #8 : Июня 11, 2011, 18:02 »

может кому пригодится - хак для определения текущего разделителя дробной части в системе:
Код
C++ (Qt)
QChar separator = QString::number(0.1).at(1);

тут же хитрость состоит в то, чтобы одной строкой передать параметры так в функцию replace, чтобы запятая была на своем месте, а точка на своём, код выше только текущие настройки настройки описывает (то что нужно заменить), а как у зеать на, что. типа если 54, то заменить на 56, если 56, то на 54 (по таблице ASCII) - как-то привязать текущее значение на то, что заменить - формулой может какой-то
« Последнее редактирование: Июня 11, 2011, 18:19 от daimon » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #9 : Июня 11, 2011, 19:04 »

если я правильно понял, то ты хочешь вот что:
Код
C++ (Qt)
QChar separator = QString::number(0.1).at(1);
QChar anotherSeparator = separator == ',' ? '.' : ',';
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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