在 QLineEdit 中只写入浮点值

2 c++ qt qregexp

如何写入QLineEdit(0.0 - 5.0) 范围内的浮点数?我使用 qregexp 来完成这样的任务,例如QRegExp a("([a-zA-Z]{3,30})")写入用户名,但不知道写入浮点数。

cbu*_*art 5

最好的选择是使用 来完成QDoubleValidator此类任务,因为它不仅会验证输入的形状,还会验证范围

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

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

dv->setNotation(QDoubleValidator::StandardNotation);
Run Code Online (Sandbox Code Playgroud)

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

  • @mark1999 除了使用“QLineEdit”和“QDoubleValidator”之外,您还可以使用“QDoubleSpinBox”。它的作用更像是允许用户使用鼠标滚轮从一个值步进到另一个值。 (2认同)