QDoubleValidator принимает несколько десятичных знаков

Я использую QDoubleValidator для меня QLineEdit, Локаль приложения (устанавливается в QtCreator) QLocale::German,

Теперь, когда я ввожу действительное значение типа double (используя точку или запятую в качестве десятичного разделителя), запись в textedit, а также преобразование строки в число с плавающей точкой работает отлично. Но валидатор также позволяет мне писать вещи с несколькими десятичными разделителями. Строки, как 123.567,890 или же ,,03.4... получить подтверждение, но не может быть преобразован в число с плавающей точкой.

Есть ли способ сказать QDoubleValidator только для проверки реальный цифры, а не просто строки без букв?

Я в основном хочу иметь валидатор, который проверяет только строки, которые могут быть преобразованы в float
используя либо язык по умолчанию, либо немецкий язык.

1

Решение

Я не использовал QDoubleValidator до сих пор, но я мог бы добиться такого поведения с помощью QRegExpValidator:

QRegExpValidator* rxv = new QRegExpValidator(QRegExp("[+-]?\\d*[\\.,]?\\d+"), this);
lineedit->setValidator(rxv);
3

Другие решения

Если вы хотите конвертировать только ваш контент в поплавок и вам не нужны локальные спецификации, вы можете использовать QRegExpValidator со следующим глубоким regexp,

ui->lineEdit->setValidator(new QRegExpValidator(QRegExp("[-+]?[0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?")));
1

По вопросам рекламы [email protected]