Название: QRegExp Отправлено: Vladimir от Июль 24, 2012, 13:59 Доброго дня! Вопрос не очень сложный, но что-то не могу догнать как разрешить ввод чисел из диапазона, скажем, от 0 до 90 с помощью регулярных выражений?! Подскажите плиз)
Название: Re: QRegExp Отправлено: kambala от Июль 24, 2012, 14:19 предлагаю не заниматься извращениями и использовать QIntValidator
Название: Re: QRegExp Отправлено: Vladimir от Июль 24, 2012, 14:24 Да, не полностью пояснил! Нужно вводить не только int значения, а скажем и 00.000 до 59.999, причем именно столько знаков до и после "."
Название: Re: QRegExp Отправлено: Пантер от Июль 24, 2012, 14:32 QDoubleValidator
Название: Re: QRegExp Отправлено: Vladimir от Июль 24, 2012, 14:37 Можно, но опять же с QDoubleValidator можно ввести любое double число, а нужно в конкретном формате "00.000" 2 знака до точки и 3 после!
Название: Re: QRegExp Отправлено: Igors от Июль 24, 2012, 15:01 Можно, но опять же с QDoubleValidator можно ввести любое double число, а нужно в конкретном формате "00.000" 2 знака до точки и 3 после! 1) Пользователь ввел напр просто "2". Глуповато заставлять его вводить 02.000, да и как заставить?2) Затравленный пользователь хочет ввести 15.000 но ведь набирать надо цифру за цифрой, пока набрал только "1" - что делать? Читаем QDoubleValidator а не высовываемся с "нужно" не подумавши Название: Re: QRegExp Отправлено: Vladimir от Июль 24, 2012, 15:34 а никто и не заставляет вводить дальше:
1) ввел 2 ну и пожалуйста 0 сами докинуться до 2.000 ! а вот если захотел ввести 91.555 или 100.555 этого быть не должно. 2) "хочет ввести 15.000" пусть вводит, но достаточно и 15 чтобы получить тоже самое с такой реализацией "[0-9]{2}[.]{1}[0-9]{3}". Ввод осуществляется в диалоговом окне и пока не нажата кнопка ОК ничего делать не нужно! А если пользователь ввел 1 и нажал ОК, значит так и задумывалось и обработается это число корректно! вопрос в том как сделать "[0-9]{2}[.] ..." от 0 до 90, а не до 99! И то, что "нужно" лучше знать мне, а не Вам! А вот как это сделать скорее лучше знаете Вы =) Название: Re: QRegExp Отправлено: kambala от Июль 24, 2012, 15:55 Код
Название: Re: QRegExp Отправлено: Igors от Июль 24, 2012, 16:01 И то, что "нужно" лучше знать мне, а не Вам! А вот как это сделать скорее лучше знаете Вы =) Ну спасибо за реверанс :) Просто Вы не первый кто считает что QDoubleValidator "не то" и упорно тыкает QRegExp. И даже не пятый или десятый.Дело в том что при вводе флотов невалидные значения могут (временно) существовать/отображаться, и это правильно. Пример: пользователь ввел 31.4 (валидное значение) но оказывается надо было 3.14. Что ему делать если забить точку Вы не даете? Конечно принимать невалидные значения не нужно, и QDoubleValidator это (удобно) делает. вопрос в том как сделать "[0-9]{2}[.] ..." от 0 до 90, а не до 99! А зачем этот ракообразный синтаксис, показатель "крутизнеы" что ли? Чем плохо незатейливое QString::toDouble и потом сравнение?Название: Re: QRegExp Отправлено: Vladimir от Июль 24, 2012, 16:08 Код
Т.е. блокировать кнопку ОК, пока не введены корректные значения?! Ну как вариант.. спасибо! Название: Re: QRegExp Отправлено: Vladimir от Июль 24, 2012, 16:14 И то, что "нужно" лучше знать мне, а не Вам! А вот как это сделать скорее лучше знаете Вы =) Ну спасибо за реверанс :) Просто Вы не первый кто считает что QDoubleValidator "не то" и упорно тыкает QRegExp. И даже не пятый или десятый.Дело в том что при вводе флотов невалидные значения могут (временно) существовать/отображаться, и это правильно. Пример: пользователь ввел 31.4 (валидное значение) но оказывается надо было 3.14. Что ему делать если забить точку Вы не даете? Конечно принимать невалидные значения не нужно, и QDoubleValidator это (удобно) делает. вопрос в том как сделать "[0-9]{2}[.] ..." от 0 до 90, а не до 99! А зачем этот ракообразный синтаксис, показатель "крутизнеы" что ли? Чем плохо незатейливое QString::toDouble и потом сравнение?Решение казалось изначально несложным.. Казалось бы, что может быть проще, чем разрешить ввод чисел из заданного диапазона, но механизм QRegExp более мудренный, чем кажется на первый взгляд.. Тогда да, действительно нужно делать проще! Спасибо за ответы) Название: Re: QRegExp Отправлено: kambala от Июль 24, 2012, 16:16 Т.е. блокировать кнопку ОК, пока не введены корректные значения?! Ну как вариант.. спасибо! да, это логично следует из предъявленных требований:Ввод осуществляется в диалоговом окне и пока не нажата кнопка ОК ничего делать не нужно! Название: Re: QRegExp Отправлено: trot от Август 29, 2012, 13:43 90|[0-8]?[0-9]?\.?[0-9]?[0-9]?[0-9]?
|