QDoubleValidator接受多个小数点

时间:2014-10-30 11:59:23

标签: c++ qt qt5 qlineedit qvalidator

我在QDoubleValidator使用了QLineEdit。应用程序区域设置(在QtCreator中设置)为QLocale::German

现在,当我输入一个有效的double(使用点或逗号作为小数分隔符)时,写入textedit以及将字符串转换为float都可以正常工作。但验证器也让我用多个小数分隔符编写东西。 123.567,890,,03.4...等字符串经过验证,但无法转换为浮点数。

有没有办法告诉QDoubleValidator只验证真实数字,而不仅仅是没有字母字符的字符串?

我基本上想要一个验证器,它只验证可以转换为浮点数的字符串 使用默认语言环境或德语语言环境。

2 个答案:

答案 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]+)?")));