Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Stek от Апрель 25, 2013, 18:03



Название: Запрет ввода "," (запятой)
Отправлено: Stek от Апрель 25, 2013, 18:03
Добрый день!

Есть lineEdit, с помощью QValidator задан диапазон допустимых значений
QValidator* validator = new QIntValidator( 0, 8000, this );
....

Необходимо запретить ввод ","

Вопрос вроде простой и решаемый, но буду признателен если кто предложит наиболее верное решение. Можно ли решить проблему использую QRegExp и QValidator?
Можно решить используя textChanged (const QString &) и replace, но этот вариант мне не подходит.


Название: Re: Запрет ввода "," (запятой)
Отправлено: gil9red от Апрель 25, 2013, 18:18
Используете regexp валидатор и в нем ставите нужный шаблон, что то вроде: [^,]*


Название: Re: Запрет ввода "," (запятой)
Отправлено: ViTech от Апрель 25, 2013, 19:07
Запятую целочисленный валидатор может из-за локали пропускает, в которой запятая - разделитель тысячных групп (QLocale::groupSeparator()).

Можно наследоваться от QIntValidator, переопределить QIntValidator::validate(), там проверять input на наличие запятой: если есть, то вернуть QValidator::Invalid, иначе вернуть результат родительского метода.