Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: daimon от Июня 10, 2011, 22:48



Название: локализация для QString::number [решено]
Отправлено: daimon от Июня 10, 2011, 22:48
есть число типа 1.12
как заставить QString::number(1.12,'f',6) возвращать строку с числом, где десятичный сепаратор запятая ("1,12")?

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

есть самопальная ячейка возвращает QVariant


Название: Re: локализация для QString::number
Отправлено: alexman от Июня 10, 2011, 23:36
Для отображения числа согласно локали можно сделать так: QString("%L1").arg(1.12, 0, 'f')


Название: Re: локализация для QString::number
Отправлено: daimon от Июня 11, 2011, 01:16
Для отображения числа согласно локали можно сделать так: QString("%L1").arg(1.12, 0, 'f')
спс
я попробовал просто метод класса локали toString, так как локаль ещё нужно было настроить - убрать разделители групп


Название: Re: локализация для QString::number [решено]
Отправлено: ChromVanadium от Июня 11, 2011, 12:54
Когда мне нужно double сделать в текстовую строку с разделителем точкой делаю так:
someString = QString::number(someDoubleNumber,'f',2).replace(",",".");


Название: Re: локализация для QString::number [решено]
Отправлено: daimon от Июня 11, 2011, 14:16
Когда мне нужно double сделать в текстовую строку с разделителем точкой делаю так:
someString = QString::number(someDoubleNumber,'f',2).replace(",",".");
тогда на поставить хитрое условие - ведь бывает запятую на точку нужно меняет, а бывает наоборот


Название: Re: локализация для QString::number [решено]
Отправлено: LisandreL от Июня 11, 2011, 15:41
Используйте
QString QLocale::toString ( double i, char f, int prec ) const;
от нужной локали.


Название: Re: локализация для QString::number [решено]
Отправлено: kambala от Июня 11, 2011, 15:51
может кому пригодится - хак для определения текущего разделителя дробной части в системе:
Код
C++ (Qt)
QChar separator = QString::number(0.1).at(1);


Название: Re: локализация для QString::number [решено]
Отправлено: BRE от Июня 11, 2011, 15:59
может кому пригодится - хак для определения текущего разделителя дробной части в системе:
Лучше почитать про QLocale.  :)


Название: Re: локализация для QString::number [решено]
Отправлено: daimon от Июня 11, 2011, 18:02
может кому пригодится - хак для определения текущего разделителя дробной части в системе:
Код
C++ (Qt)
QChar separator = QString::number(0.1).at(1);

тут же хитрость состоит в то, чтобы одной строкой передать параметры так в функцию replace, чтобы запятая была на своем месте, а точка на своём, код выше только текущие настройки настройки описывает (то что нужно заменить), а как у зеать на, что. типа если 54, то заменить на 56, если 56, то на 54 (по таблице ASCII) - как-то привязать текущее значение на то, что заменить - формулой может какой-то


Название: Re: локализация для QString::number [решено]
Отправлено: kambala от Июня 11, 2011, 19:04
если я правильно понял, то ты хочешь вот что:
Код
C++ (Qt)
QChar separator = QString::number(0.1).at(1);
QChar anotherSeparator = separator == ',' ? '.' : ',';