如何写入范围内的 QLineEdit 浮点数(0.0 - 5.0)?我使用qregexp执行此类任务,例如 QRegExp a("([a-zA-Z]{3,30})") 来编写用户名,但没有想写浮点数 .
QLineEdit
QRegExp a("([a-zA-Z]{3,30})")
最好的选择是使用QDoubleValidator来执行此类任务,因为它不仅会验证输入的形状,还会验证范围:
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]) . 无论如何,我建议使用验证器,因为如果范围通过项目或运行时更改,则正则表达式更难以扩展 .
[-+]?[0-9]*\.?[0-9]+
([0-4]?\.[0-9]+)|(5\.0+)|([0-5])
1 回答
最好的选择是使用QDoubleValidator来执行此类任务,因为它不仅会验证输入的形状,还会验证范围:
如果您正在处理许多小数(或者如果您计划将范围更改为更宽的小数),您可能会对禁用科学记数法感兴趣:
另一方面,为了完成答案,因为你要求使用正则表达式,浮点数的一般正则表达式是
[-+]?[0-9]*\.?[0-9]+
,所以对于你的特定范围你可以尝试:([0-4]?\.[0-9]+)|(5\.0+)|([0-5])
. 无论如何,我建议使用验证器,因为如果范围通过项目或运行时更改,则正则表达式更难以扩展 .