利用QRegExp限制输入框只接受数值(可以是小数)

要求:

1) 输入的只能是十进制的整数或者小数;

2) 数值可以是正数,零,或者负数;

3) 假如输入的数字包含小数点,则小数点只能出现一次;

4) 假如输入的数字包含小数点,则小数点前至少要有一位数字;

5) 假如输入的数字包含小数点,则小数点后面也至少有一位数字。

 

代码:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QRegExpValidator>
#include <QRegExp>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QRegExpValidator * pRegVld = new QRegExpValidator(this);
    pRegVld->setRegExp(QRegExp(QString("^-?\\d{1,}(\\.[0-9]+)?")));
    ui->lineEdit->setValidator(pRegVld);
}

MainWindow::~MainWindow()
{
    delete ui;
}

解释:

1) ^代表字符串的开头。^-合起来代表字符串的开头必须是负号;

2) ?意味着它前面的字符可以出现一次,或者不出现。^-?合起来代表字符串开头最多有一个负号;

3) \\d代表字符0-9的任意一个;

4) {1,}代表其前面的字符要出现至少一次,最多不限。所以\\d{1,}合起来代表字符串由任意数目的数字字符组成,但字符串不得为空;

5) \\.代表小数点;

6) [0-9]的意义其实与\\d一致;

7) +的意义与{1,}一致。所以[0-9]+代表的意义与\\d{1,}一致;

8) \\.[0-9]+ 的意义是,字符串以 “.” 开头,后面跟着一个非空字符串,且字符串由数字字符构成;

9) (\\.[0-9]+) 构成一个整体,后面跟了一个?。?说明这个整体(\\.[0-9]+) 最多出现一次,也可以不出现。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值