在QLineEdit中只写入浮点值

时间:2017-09-23 18:07:13

标签: c++ qt qregexp

如何写入QLineEdit范围内的浮点数(0.0 - 5.0)?我使用qregexp执行此类任务,例如QRegExp a("([a-zA-Z]{3,30})")来编写用户名,但没有想写浮点数。

2 个答案:

答案 0 :(得分:1)

最好的选择是使用QDoubleValidator来执行此类任务,因为它不仅会验证输入的形状,还会验证范围:< / p>

auto dv = new QDoubleValidator(0.0, 5.0, 2); // [0, 5] with 2 decimals of precision
yourLineEdit->setValidator(dv);

如果您正在处理许多小数(或者如果您打算将范围更改为更宽的小数),您可能对禁用科学记数法感兴趣:

dv->setNotation(QDoubleValidator::StandardNotation);

另一方面,为了完整答案,因为你要求使用正则表达式,浮点数的一般正则表达式是[-+]?[0-9]*\.?[0-9]+,所以对于你的特定范围,你可以尝试:([0-4]?\.[0-9]+)|(5\.0+)|([0-5])。无论如何,我建议使用验证器,因为如果范围在项目中或在运行时更改,则正则表达式更难扩展。

答案 1 :(得分:1)

使用正则表达式并打破范围,则0.0-5.0为:

[0-4]\.\d|5\.0

扩展

   #  0.0  to  4.9
   [0-4] \. \d 
|  
   #  5.0
   5 \. 0