我在QDoubleValidator
使用了QLineEdit
。应用程序区域设置(在QtCreator中设置)为QLocale::German
。
现在,当我输入一个有效的double(使用点或逗号作为小数分隔符)时,写入textedit以及将字符串转换为float都可以正常工作。但验证器也让我用多个小数分隔符编写东西。 123.567,890
或,,03.4...
等字符串经过验证,但无法转换为浮点数。
有没有办法告诉QDoubleValidator
只验证真实数字,而不仅仅是没有字母字符的字符串?
我基本上想要一个验证器,它只验证可以转换为浮点数的字符串 使用默认语言环境或德语语言环境。
答案 0 :(得分:3)
到目前为止我还没有使用QDoubleValidator
,但我可以使用QRegExpValidator
来实现此类行为:
QRegExpValidator* rxv = new QRegExpValidator(QRegExp("[+-]?\\d*[\\.,]?\\d+"), this);
lineedit->setValidator(rxv);
答案 1 :(得分:1)
如果您只想将内容转换为浮动广告而不想要区域设置规范,则可以使用QRegExpValidator
与下一个深regexp
。
ui->lineEdit->setValidator(new QRegExpValidator(QRegExp("[-+]?[0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?")));