1.什么是Qt
1)Qt是一个跨平台的C++图形用户界面应用程序框架;
2)Qt的通信机制是通过信号槽机制来完成的;
3)信号槽机制的优点主要包括类型安全(参数类型和个数相同,槽可以缺少后面的参数)、松散耦合(信号和槽函数只关注其内部,不关注其他方面);
4)Qt的元对象系统提供了对象间的通信机制、运行时类型信息和动态属性系统的支持,是标准C++的一个扩展,它使Qt能够更好的实现图像用户界面的编程,想要使用元对象系统,必须拥有基类QObject、拥有宏Q_OBJECT、拥有Qt的moc插件。
注:Qt下载地址:http://download.qt.io/
2.字符串类(QString)
1)利用 + 组合拼接两个字符串;
2)利用 += 向一个字符串后面追加(QString::append());
3)QString::sprintf()和标准库中的sprintf()一样;
4)QString::arg()用于字符串组合,进行传输参数,支持的数据类型十分广泛;
5)insert()在原字符串特定的位置插入另一个字符串;
6)prepend()在原字符串的开头插入另一个字符串;
7)replace()利用指定的字符串代替原字符串中的某些字符;
8)trimmed()移除字符串两端的空白字符,simplified()移除字符串两端的空白字符,并用“”替代;
9)startsWith()判断一个字符串是否以某个字符串开头,endsWith()判断一个字符串是否以某个字符串结尾,contains()判断一个字符串中是否包含某个字符串;
10)可以使用比较操作符来比较两个字符串的大小,同时也可以使用函数localeAwareCompare()和compare()来进行比较;
11)toInt()将字符串转换为整形数值,还可以转换成其他类型,函数类似;
12)toLatin1()将字符转换成Latin-1编码的8位字符串,同时也可以转换成其他编码的字符,函数类似;
13)isNULL()指字符串位NULL,isEmpty()指字符串中没有字符,但并不一定为NULL。
注:Qt::CaseSensitivity表示大小写敏感,Qt::CaseInsensitive表示不敏感。
3.容器类
1)QList是最常用的容器,查找速度快,两端添加速度快,插入速度慢;
2)QLinkedList链式列表容器,存储为非连续的内存,不能够使用下标访问,只能够使用迭代器,当对一个很大的列表进行插入操作时,具有更高的效率;
3)QVector存储在相邻连续内存中;
4)QMap<key,T>键值对容器,QHash<Key,T>键值对容器,QHash具有更快的查询速度,并且以任意顺序存储数据,QMap总是以Key的顺序存储数据;
5)QMultiMap<Key,T>和QMultiHash<Key,T>是一个Key可以映射多个值;
6)QVariant类似于C++中的联合类型,他不仅能够保存很多Qt类型的值,也能够保存Qt容器类型的值。
注1:JAVA风格迭代器,如QListIterator<T>只读迭代器,读写迭代器QMutableListIterator<T>;
注2:STL风格迭代器,如QList<T>::const_iterator只读迭代器,读写迭代器 QList<T>::interator;
注3:<QtAlgorithms>和<QtGlobal>提供了一些常用的算法和函数。
4.正则表达式
1)使用正则表达式可以很方便的处理字符串的一些操作,如验证,查找等;
2)Qt利用QRegExp类实现正则表达式的表示;
3)正则表达式由表达式、量词和断言组成。
注1:量词表
量词 | 含义 |
? | 匹配0次或者1次 |
+ | 匹配1次或者多次 |
* | 匹配0次或者多次 |
[n] | 匹配n次 |
[n,] | 至少匹配n次 |
[,m] | 最多匹配m次 |
[n,m] | 至少匹配n次,最多匹配m次 |
注2:断言表
符号 | 含义 |
^ | 表示在字符串开头进行匹配 |
$ | 表示在字符串结尾进行匹配 |
\b | 单词边界 |
\B | 非单词边界 |
\s | 匹配一个空白字符 |
(?=E) | 表达式后面紧随A才匹配 |
(?!E) | 表达式后面不紧随A才匹配 |
5.隐式共享和内存分配策略
1)隐式共享又称为写时复制,即当两个对象共享同一份数据时,如果数据不改变,则不进行数据的复制,只是进行浅拷贝(引用复制),直到当需要改变数据时才进行深拷贝(复件)。优点是可以降低对内存和CPU资源的使用,提高程序的运行效率。同时内部具有自动引用计数机制。
2)内存分配策略即是QString在一个连续的内存块中保存字符串数据,当字符串的长度不断增长时,QString需要重新分配内存空间,以便于拥有足够的空间保存增加的字符串数据。第一步,每次分配四个字符空间,直到20,第二步,在20到4084之间,QString分配的内存块大小以两倍的速度增长,第三步,当大于4084时,每次以2048个字符大小进行增长。