算法及正则表达式
一、Qt5常用算法
1.double c=qAbs(a):数qAbs()返回double型数值a的绝对值;
2.double max=qMax(b,c):函数qMax()返回两个数值中的最大值;
3.int bn=qRound(b):返回一个与浮点数最接近的整数值(四舍五入);
4.int cn=qSwap(bn,cn):交换两数的值;
代码
#include <QDebug>
int main(int argc,char *argv[])
{
double a=-19.3,b=9.7;
double c=qAbs(a); //c=19.3
double max=qMax(b,c); //max=c=19.3
int bn=qRound(b); //bn=10
int cn=qRound(c); //cn=19
qDebug()<<"a="<<a;
qDebug()<<"b="<<b;
qDebug()<<"c=qAbs(a)= "<<c;
qDebug()<<"qMax(b,c)= "<<max;
qDebug()<<"bn=qRound(b)= "<<bn;
qDebug()<<"cn=qRound(c)= "<<cn;
qSwap(bn,cn);
qDebug()<<"qSwap(bn,cn):"<<"bn="<<bn<<" cn="<<cn;
return 0;
}
效果图:

二、基本正则表达式
正则表达式由表达式(expressions)、量词(quantifiers)和断言(assertions)组成。
正则表达式使用之前需要添加头类为QRegExp和QRegExpValidator,否则会出现编译错误
RegExp:
The QRegExp class provides pattern matching using regular expressions.
QRegExp &operator=(const QRegExp &rx)
QRegExpValidator:
The QRegExpValidator class is used to check a string against a regular expression.
QRegExpValidator(QObject *parent = Q_NULLPTR)
QRegExpValidator(const QRegExp &rx, QObject *parent = Q_NULLPTR)
由QRegExpValidato类中第三条引用表示的其释意,我们可以得出QRegExpValidato(rx,pos)中的pos不能直接写成0,否则会出现编译时的错误。
错误类型为:
error: invalid initialization of non-const reference of type ‘int&’ from an rvalue of type ‘int’
if(QValidator::Acceptable!=v.validate(input_2,0))
常见的正则字符:


QValidator::Invalid:值为0,表示完全不匹配
QValidator::Intermediate:值为1,表示部分匹配
QValidator::Acceptable:值为2,表示完全匹配
代码:
QString=input_2="",input_3="";
QRegExp rx("[a-z]{1,3}\\d{3,7}"); //用户名格式
//用户名为一至三位小写字母加三至七位数字组成
QRegExp re("[a-z]{0,3}\\d{0,7}[^abc]"); //密码格式
//密码格式请对照上表自行查看
QRegExpValidator v(rx,0);
QRegExpValidator u(re,0);
input_2=edit_1->text();
input_3=edit_2->text();
int pos=0;
if(QValidator::Acceptable!=v.validate(input_2,pos)) //检验用户名
{
label_5->setText("用户名错误");
}
else
{
if(QValidator::Acceptable==u.validate(input_3,pos)) //检验密码
{
label_5->setText("登录成功");
}
else
label_5->setText("密码错误");
}
在写正则表达式限制输入格式时,请注意== QRegExp rx("[a-z]{1,3}\d{3,7}"),双引号里面的限制输入的字符符号一定要是在输入法的英文模式下打出来==,否则编译时并不会报错,可以运行,但运行之后的逻辑并不和您所想的限制条件一样,我就在这地方困了10多分钟,所幸项目不大,找了出来。
运行界面效果图:


刚刚开始学习Qt,并不是很精通,若有错误,欢迎指正,感谢
本文介绍了Qt5中的几个常用算法,包括qAbs()、qMax()、qRound()和qSwap(),并讲解了如何使用QRegExp进行正则表达式匹配,以及在使用QRegExpValidator时需要注意的事项。同时,文中提到了正则表达式的验证状态和编写正则表达式时的注意事项。
算法(qAbs、qMax、qRound、qSwap)及正则表达式&spm=1001.2101.3001.5002&articleId=88135801&d=1&t=3&u=a2a700ee16614db39061c092a1ae25be)
7809

被折叠的 条评论
为什么被折叠?



