QLocale |
Здравствуйте, гость ( Вход | Регистрация )
QLocale |
Dimix |
21.1.2011, 8:46
Сообщение
#1
|
Студент Группа: Участник Сообщений: 74 Регистрация: 24.11.2010 Пользователь №: 2215 Спасибо сказали: 0 раз(а) Репутация: 0 |
Помогите проблема в количестве цыфр. По данному коду больше 4 цыфр нельзя ввести. Что не так?
|
|
|
silver47 |
21.1.2011, 8:55
Сообщение
#2
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
Зачем локаль к эдиту в который ты только цифры вводишь?
|
|
|
Rocky |
21.1.2011, 9:48
Сообщение
#3
|
Старейший участник Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: 7 |
Dimix, а что ты вообще хочешь сделать?
|
|
|
igor_bogomolov |
21.1.2011, 10:20
Сообщение
#4
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
silver47, Rocky, что здесь непонятно, нужно привести число к принятому в данной стране формату. Это может быть замена точки на запятую (или наоборот), раставление отступов и т.д.
Помогите проблема в количестве цыфр. По данному коду больше 4 цыфр нельзя ввести. Что не так? Всё просто. Это потому что "1 100" не приводится к double из-за пробела и возвращается 0-------------- Замечания по коду: 1. textChanged следует заменить на textEdited иначе слот будет вызываться несколько раз. Первый когда пользователь вводит текст, второй когда этот текст меняешь программно в слоте. 2. Почему localeComing не принимает передаваемую ему строку? |
|
|
Dimix |
21.1.2011, 12:03
Сообщение
#5
|
Студент Группа: Участник Сообщений: 74 Регистрация: 24.11.2010 Пользователь №: 2215 Спасибо сказали: 0 раз(а) Репутация: 0 |
Замечания по коду: 1. textChanged следует заменить на textEdited иначе слот будет вызываться несколько раз. Первый когда пользователь вводит текст, второй когда этот текст меняешь программно в слоте. 2. Почему localeComing не принимает передаваемую ему строку? Я Вас правильно понял. Нужно вот так?
А что делает QLineEdit::setLocale();? Может там тоже нужно формат задать? |
|
|
igor_bogomolov |
21.1.2011, 12:38
Сообщение
#6
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
Цитата Я Вас правильно понял. Нужно вот так? void localeComing(const QString &locStr);
Цитата А что делает QLineEdit::setLocale();? нет такого методаDimix, да вы в первый раз почти всё правильно делали. Просто перед toDouble(AddComingEditSum->text()); выкиньте лишние пробелы из строки и всё должно заработать |
|
|
Dimix |
21.1.2011, 13:24
Сообщение
#7
|
Студент Группа: Участник Сообщений: 74 Регистрация: 24.11.2010 Пользователь №: 2215 Спасибо сказали: 0 раз(а) Репутация: 0 |
Цитата выкиньте лишние пробелы из строки Нельзя нужно чтобы пользователь вводил и оно отделяло тысячи от сотен.
|
|
|
igor_bogomolov |
21.1.2011, 13:53
Сообщение
#8
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
Dimix, блин, я же уже дважды написал в чём проблема и что нужно сделать
Цитата Это потому что "1 100" не приводится к double из-за пробела и возвращается 0 Цитата перед toDouble(AddComingEditSum->text()); выкиньте лишние пробелы из строки
|
|
|
Dimix |
21.1.2011, 14:35
Сообщение
#9
|
Студент Группа: Участник Сообщений: 74 Регистрация: 24.11.2010 Пользователь №: 2215 Спасибо сказали: 0 раз(а) Репутация: 0 |
СПАСИБО ОГРОМНОЕ. Но я хочу еще поинтересоватся.
1.AddComingEditSum = new QLineEdit(this); //зачем this? 2.void localeComing(const QString &text) //почему здесь не написано void MainWindow::localeComing(const QString &text) 3.(value.remove(QRegExp("\\s+")) //вот эту строчку я вообще не понимаю... Если несложно проконсультируйте или дайте ссылку где про это почитать так чтоб разобратся. Еще раз ОГРОМНОЕ СПАСИБО igor_bogomolov! |
|
|
igor_bogomolov |
21.1.2011, 14:47
Сообщение
#10
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
1. Устанавливаю родителя виджету. Читай про объектную модель Qt, что бы понять зачем это нужно. Без этого понимания дальше двигаться в освоении Qt просто бессмысленно.
2. Потому что я писал эту функцию внутри описания класса, а затем тупо скопировал в сообщение. Т.е.
3. Тут удаляются любые пробельные символы в строке. Читай про регулярные выражения. По всем вопросам можно получить подробный ответ в доках, или скачай книгу Макса Шлее по Qt, она на русском. |
|
|
Текстовая версия | Сейчас: 30.12.2024, 9:50 |