本文主要讲述正则表达式和 QLIneEdit 的结合使用
相信很多人对正则表达式都不陌生,Qt
中的正则表达式的使用和其他编程语言中的使用没有什么大的区别。
常用类及其函数
如果在Qt
中只使用正则表达式,那么我们完全可以使用QRegExp
这个类,在初始化的时候代码如下:
QString regInfo = "(([0-9]{1})|([1-9]{1}[0-9]{?}))\\.([0-9]{1})";
QRegExp regE(reInFo);
不难看出,QRegExp
类在声明的时候构造函数接收的是一个字符串(注意:不支持C++11
里面的这样的初始化方式QRegExp regE = reInFo
QLineEdit 说明
QLineEdit
是输入文本的方式,但是在实际的开发过程中,可能因为某些原因,不得不让这个文本进行限制,如果是浮点数,在Qt 5.12
这个版本中,QDoubleValidator
是有Bug
的,不管是实例化还是使用函数设置,都无效,那么只有使用其他方式进行替代。
替代函数如下:
/// poDigital参数为整数位,flDigital 是小数位
void MainWindow::setDoubleValidator(const unsigned int &poDigital, const unsigned int &flDigital)
{
QString regBegin = "(([0-9]{1})|([1-9]{1}";
for (unsigned int i = 1; i < poDigital; i++)
{
regBegin += "[0-9]?";
}
regBegin += tr("))\\.([0-9]{%1})").arg(fDigit);
QRegExp regExp(regBegin);
mValidator->setRegExp(regExp);/// mValidator 在 .h 文件里面声明 QRegExpValidator *mValidator;
ui->lineEdit->setValidator(mValidator);
}
注:此函数主要适用于比较小的数