- Qt常用算法:
- 函数qAbs(value),返回value型数值的绝对值。
- qMax(a,b):函数qMax(a,b)返回两个数值中的最大值。
- qRound(b):函数qRound()返回与一个浮点数最接近的整数值,即四舍五入返回一个整数值。
- qSwap(a,b):函数qSwap()交换两数的值。
例如我们可在main.cpp中主函数main中加入如下内容:
double b=-11.3,c=9.6;
double d=qAbs(b);
double max=qMax(c,d);
int cn=qRound(c);
int dn=qRound(d);
qDebug()<<"b="<<b;
qDebug()<<"c="<<c;
qDebug()<<"d=qAbs(b)= "<<d;
qDebug()<<"qMax(c,d)= "<<max;
qDebug()<<"cn=qRound(c)= "<<cn;
qDebug()<<"dn=qRound(d)= "<<dn;
qSwap(cn,dn);
qDebug()<<"qSwap(cn,dn):"<<"cn="<<cn<<"dn="<<dn;
- 基本的正则表达式
使用正则表达式可以方便的完成处理字符串的一些操作,如验证、查找、替换和分割等。Qt的QRegExp类是正则表达式的表示类。它基于Perl的正则表达式语言,完全支持Unicode,正则表达式由表达式(expressions)、量词(quantifiers)和断言(assertions)组成。
- 最简单的表达式是一个字符。字符集可以使用表达式如“[AEIOU]”,表示匹配所有的大写元音字母;使用“[^AEIOU]”,表示匹配所有非元音字母,即辅音字母;连续的字符集可以使用表达式如“[az]”,表示匹配所有的小写英文字母。
- 量词说明表达式出现的次数,如“x[1,2]”表示“x”可以至少有一个,至多有两个。 在计算机语言中,标识符通常要求以字母或下画线(也称下画线)开头,后面可以是字母、数字和下画线。满足条件的标识符表示为:
“[AZaz_]+[AZaz_09]*”其中,表达式中的“+”表示“[AZaz_]”至少出现一次,可以出 现多次;“*”表示“[AZaz_09]”可以出现零次或多次。
正则表达式的量词表:
量词 | 含义 |
E? | 匹配0次或1次 |
E+ | 匹配1次或多次 |
E* | 匹配0次或多次 |
E[n] | 匹配n次 |
E[n,] | 至少匹配n次 |
E[,m] | 最多匹配m次 |
E[n,m] | 最少匹配n次,最多匹配m次 |
“^”“$”“\b”都是正则表达式的断言,正则表达式的断言表:
符号 | 含义 |
^ | 表示在字符串开头进行匹配 |
$ | 表示在字符串结尾进行匹配 |
\b | 单词边界 |
\B | 非单词边界 |
(?=E) | 表示表达式后紧随E才匹配 |
(?!E) | 表示表达式后不紧随E才匹配 |
下面在Qt中使用一个正则表达式来看效果:
首先在设计中加入一个QLineEdit文本框用做验证输入
QLineEdit *lineEdit = new QLineEdit;
QRegExp regexp("[A-Za-z][0-9][1-9]{0,2}");
//匹配开头为字母,第二个为数字,紧接着的0-2个为非零数字
//setValidator对输入设置约束
lineEdit->setValidator(new QRegExpValidator(regexp));