要求:
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]+) 最多出現一次,也可以不出現。