QLineEdit输入框,使用正则表达式限制

示例

菜鸟教程正则表达式

#include <QLineEdit>
#include <QRegExpValidator>

QRegExp rx1("-?\\d+(\\.\\d+)?");  //匹配所有的数字,包括负数和小数,示例1
QRegExp rx2("^-?([0-9]+[\.0-9][0-9]+)$");  //匹配所有的数字,包括负数和小数,示例2
QRegExp rx3("^([1-9][0-9]*){1,3}$");  //正整数,示例3
QRegExp rx4("^(([1-9]+[0-9]*.{1}[0-9]+)|([0].{1}[1-9]+[0-9]*)|([1-9][0-9]*)|([0][.][0-9]+[1-9]*))$");  //正数,示例4
QRegExp rx5("^([1-9][0-9]*){1,3}|-1|0$");  //-1、0和正整数,示例5
QRegExp rx6("^([0-9]{1,2}(\\.[0-9]{1,2})?|100(\\.00?)?)$");  //百分比,示例6

QLineEdit* pLlineEdit = new QLineEdit();
QRegExpValidator* pValidator = new QRegExpValidator(rx1, pLlineEdit);
pLlineEdit->setValidator(pValidator);

rx1.exactMatch("111"); //界面输入、字符串判别均通过测试
rx2.exactMatch("111"); //界面输入通过测试,字符串判别未通过测试

示例1存在的问题:界面上可输入00000这种数值,待解决。
示例6存在的问题:当外部导入excel获取到QString的小数值后,直接判别rx6.exactMatch未通过测试,需要按下列方式转一下才可以。

QString qstr = "20.56";
double dTemp = qstr.toDouble();
qstr = QString::number(dTemp);
QRegExp rx6("^([0-9]{1,2}(\\.[0-9]{1,2})?|100(\\.00?)?)$");  //百分比
rx6.exactMatch(qstr);//测试通过
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值