学习Qt5(1)

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个字符大小进行增长。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值