Я использую QDoubleValidator
для меня QLineEdit
, Локаль приложения (устанавливается в QtCreator) QLocale::German
,
Теперь, когда я ввожу действительное значение типа double (используя точку или запятую в качестве десятичного разделителя), запись в textedit, а также преобразование строки в число с плавающей точкой работает отлично. Но валидатор также позволяет мне писать вещи с несколькими десятичными разделителями. Строки, как 123.567,890
или же ,,03.4...
получить подтверждение, но не может быть преобразован в число с плавающей точкой.
Есть ли способ сказать QDoubleValidator
только для проверки реальный цифры, а не просто строки без букв?
Я в основном хочу иметь валидатор, который проверяет только строки, которые могут быть преобразованы в float
используя либо язык по умолчанию, либо немецкий язык.
Я не использовал QDoubleValidator
до сих пор, но я мог бы добиться такого поведения с помощью QRegExpValidator
:
QRegExpValidator* rxv = new QRegExpValidator(QRegExp("[+-]?\\d*[\\.,]?\\d+"), this);
lineedit->setValidator(rxv);
Если вы хотите конвертировать только ваш контент в поплавок и вам не нужны локальные спецификации, вы можете использовать QRegExpValidator
со следующим глубоким regexp
,
ui->lineEdit->setValidator(new QRegExpValidator(QRegExp("[-+]?[0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?")));