在 QLineEdit 中只写入浮点值
Write only float values in QLineEdit
如何在 QLineEdit
范围内写入浮点数 (0.0 - 5.0)?我使用 qregexp 来完成这样的任务,例如 QRegExp a("([a-zA-Z]{3,30})")
来写用户名,但不知道写浮点数。
最好的选择是使用 QDoubleValidator
来完成这样的任务,因为它不仅会验证输入的 shape,还会验证 范围:
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])
.无论如何,我建议使用验证器,因为如果范围在整个项目中或在 运行-time.
中发生变化,则正则表达式更难以扩展。
使用正则表达式并分解范围,0.0 - 5.0 将是:
[0-4]\.\d|5\.0
展开
# 0.0 to 4.9
[0-4] \. \d
|
# 5.0
5 \. 0
如何在 QLineEdit
范围内写入浮点数 (0.0 - 5.0)?我使用 qregexp 来完成这样的任务,例如 QRegExp a("([a-zA-Z]{3,30})")
来写用户名,但不知道写浮点数。
最好的选择是使用 QDoubleValidator
来完成这样的任务,因为它不仅会验证输入的 shape,还会验证 范围:
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])
.无论如何,我建议使用验证器,因为如果范围在整个项目中或在 运行-time.
使用正则表达式并分解范围,0.0 - 5.0 将是:
[0-4]\.\d|5\.0
展开
# 0.0 to 4.9
[0-4] \. \d
|
# 5.0
5 \. 0