qt中LineEdit空间的限制输入。
案例:
1. 限制输入 -180.0 - 180.0
QRegEXp rx("-?(180|1[0-7]\\d(\\.\\d{1,4})|[1-9]\\d(\\.\\d{1,4})|0(\\.\\d{1,4})|[1-9](\\.\\d{1,4}))$");
QRegExpValidator *pReg = new QRegExpValidator(rx,this);
ui->LineEdit->setValidator(pReg);
解析:
1. 规范来讲应该需要 ^ 和 $分别作为开头和结尾,例如 :^-?(90|[1-8]\d)&, ^([0-9]\\d+)$。
但是我写的时候并没有加 ^ ,所以 ^ 加不加会不会有影响,暂时本人还没接触到问题。但是 结尾的 $最好还是加,这个可能会有影响。
2. "-?" 表示一个或0个负号,这里面的问号表示其前面的字符重复0次或1次;
这个可以像我的案例一样放在最外层作为整体的一个正负,也可以分布在每一部分之前,看个人需求。
3. 看第二部分的 1[0-7]\\d ,“\d”是一个转义字符,表示随机匹配一位数字,简单来说就是 0-9 ,在使用时要和前方,也就是[0-7]这一部分中间加上 “\”,我也不知道为什么,可能是规定吧。这样整体就限制为为,第一个数是 1,第二个数是 0-7,第三个数就随机( 0-9 ),也就是我们需要的范围内的±(100-179)之间的数。
4.我在每个数字后边都加了 (\\.\\d{1,4}) ,这部分表示小数,“\.”表示数点,“\d{1,4}”就可以理解为最多能输入到小数点后四位,同理,在使用时要在前方加上 “\" 。
5.“ \d+”,表示前边的"\d"(可以理解为0-9)重复一次或者多次,一般用于 无穷,比如:0-无穷,可以这么写 ("([1-9]\\d+(\\.\\d{1,4})|0(\\.\\d{14})|[1-9](\\.\\d{1,4}))$" )。在写的时候注意要包括所有,比如0的小数点,个位数的小数点等。我在使用时将 0的限制作为第一个的时候好像不能用,不清楚是不是我个人编译环境的问题,有碰到这种问题的可以评论下,这种情况的资料比较少。
总结:这部分只说名了数字部分的,大概看完后就能学会数字方面的限制了,至于字母之类的请看借用资料的第一个链接,个人没尝试过,等有时间会再发文补充。
以上为个人见解,刚刚入门Qt,大佬们有问题或者建议可以在评论区提出,谢谢各位。
资料借用: