crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> QLocale
Dimix
  опции профиля:
сообщение 21.1.2011, 8:46
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 74
Регистрация: 24.11.2010
Пользователь №: 2215

Спасибо сказали: 0 раз(а)




Репутация:   0  


AddComingEditSum = new QLineEdit;
AddComingEditSum->setFixedWidth(70);
AddComingEditSum->setText("0");

connect(AddComingEditSum, SIGNAL(textChanged(QString)), this, SLOT(localeComing()));
void MainWindow::localeComing()
{
    QLocale ukrLocale(QLocale::Ukrainian, QLocale::Ukraine);
    double sum = ukrLocale.toDouble(AddComingEditSum->text());
    AddComingEditSum->setText(ukrLocale.toString(sum));
}
Помогите проблема в количестве цыфр. По данному коду больше 4 цыфр нельзя ввести. Что не так?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
igor_bogomolov
  опции профиля:
сообщение 21.1.2011, 10:20
Сообщение #2


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


silver47, Rocky, что здесь непонятно, нужно привести число к принятому в данной стране формату. Это может быть замена точки на запятую (или наоборот), раставление отступов и т.д.

Цитата(Dimix @ 21.1.2011, 8:46) *
Помогите проблема в количестве цыфр. По данному коду больше 4 цыфр нельзя ввести. Что не так?
Всё просто. Это потому что "1 100" не приводится к double из-за пробела и возвращается 0

--------------
Замечания по коду:
1. textChanged следует заменить на textEdited иначе слот будет вызываться несколько раз. Первый когда пользователь вводит текст, второй когда этот текст меняешь программно в слоте.
2. Почему localeComing не принимает передаваемую ему строку?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Dimix
  опции профиля:
сообщение 21.1.2011, 12:03
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 74
Регистрация: 24.11.2010
Пользователь №: 2215

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(igor_bogomolov @ 21.1.2011, 10:20) *
Замечания по коду:
1. textChanged следует заменить на textEdited иначе слот будет вызываться несколько раз. Первый когда пользователь вводит текст, второй когда этот текст меняешь программно в слоте.
2. Почему localeComing не принимает передаваемую ему строку?

Я Вас правильно понял. Нужно вот так?
void localeComing(const QString locStr);

А что делает QLineEdit::setLocale();?
Может там тоже нужно формат задать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


8 чел. читают эту тему (гостей: 8, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 21.12.2024, 8:22