Russian Qt Forum
Ноябрь 26, 2024, 05:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Запрет ввода "," (запятой)  (Прочитано 3037 раз)
Stek
Гость
« : Апрель 25, 2013, 18:03 »

Добрый день!

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

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

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

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Апрель 25, 2013, 18:18 »

Используете regexp валидатор и в нем ставите нужный шаблон, что то вроде: [^,]*
Записан

ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #2 : Апрель 25, 2013, 19:07 »

Запятую целочисленный валидатор может из-за локали пропускает, в которой запятая - разделитель тысячных групп (QLocale::groupSeparator()).

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

Пока сам не сделаешь...
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.119 секунд. Запросов: 23.