2

我正在QDoubleValidator为我的QLineEdit. 应用程序语言环境(在 QtCreator 中设置)是QLocale::German.

现在,当我输入一个有效的双精度(使用点或逗号作为小数分隔符)写入 textedit 以及将字符串转换为浮点数时,效果非常好。但验证器还允许我编写带有多个小数分隔符的内容。字符串喜欢123.567,890,,03.4...得到验证,但不能转换为浮点数。

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

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

4

2 回答 2

4

QDoubleValidator到目前为止我还没有使用过,但我可以通过使用来实现这样的行为QRegExpValidator

QRegExpValidator* rxv = new QRegExpValidator(QRegExp("[+-]?\\d*[\\.,]?\\d+"), this);
lineedit->setValidator(rxv);
于 2014-10-30T12:07:53.083 回答
2

如果您只想将内容转换为浮点数并且不需要语言环境规范,则可以使用QRegExpValidatornext deep regexp

ui->lineEdit->setValidator(new QRegExpValidator(QRegExp("[-+]?[0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?")));
于 2014-10-30T12:09:14.433 回答