QIntValidator,QDoubleValidator无法限制数值范围

QLineEdit输入框有时要做限制输入的内容,如只输入数据。上面提供的两个类在使用时,setRange不生效。网上方法有两种,一个是重写validate函数,一个是使用正则表达式。

这里记录下使用正则表达式

先简要解释下正则表达式的含义:

^: 匹配字符串的开始。

$: 匹配字符串的结束。

\d: 匹配数字。注意:在C++中要对\转义,即\d用代码表示为\\d

. :匹配除换行符以外的任意字符。

{n}:重复n次。

{n, m}:重复至少n次,至多m次。

?: 重复零次或一次。

[0-9]:0到9数字中的任意一个数字。

[A-Z]:A到Z字母中的任意一个字母。

[a-z]:a到z字母中的任意一个字母。

| :或。可以把不同的子表达式合成一个总表达式

 以限制输入0-50的正整数为例,具体代码如下:

    auto reg = QRegularExpression("^([1-4][0-9]?|50 |[5-9] | 0)$");
    auto pValidator = new QRegularExpressionValidator(this);
    pValidator->setRegularExpression(reg);
    ui.lineEdit->setValidator(pValidator);

 [1-4][0-9]?:如果?匹配的是0次。则表示输入的数值为1、2、3、4;如果?匹配的是1次,则输入的数值为[10, 49]闭区间的任意整数值。

[5-9] :表示匹配输入数值为5、6、7、8、9。

50:表示匹配50。

0:表示匹配0。

然后通过|组合,就表示匹配[0, 50]区间的任意整数值。

上面是其他博主写的,我这里要输入正负数

例一:输入浮点数,小数点后三位

"^(-?[0-9]*\\.[0-9]{3})$"

参考链接

https://blog.csdn.net/danshiming/article/details/134709596

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值