本篇简要介绍Qt全局定义中的数据类型、函数、宏定义;容器类中:顺序容器类、关联容器类;容器类的迭代器;Qt类库的模块。 1.Qt全局定义
1.1 数据类型定义详见《Qt5.9 c++开发指南》 1.2 函数
1.3 宏定义
1.3.1 QT_VERSION这个宏展开为数值形式0xMMNNPP(MM= major,NN = minor, PP = patch)表示Qt 编译器版本,例如Qt编译器版本为Qt5.9.1,则QT_VERSION 为0x050901。这个宏常用于条件编译设置根据 Qt 版本不同,编译不同的代码段。 1.3.2 QT_VERSION_CHECK这个宏展开为 Qt版本号的一个整数表示。 1.3.3 QT_VERSION_STR这个宏展开为 Qt版本号的字符串。 1.3.4 Q_BYTE_ORDER、Q_BIG_ENDIAN 和 Q_LITTLE_ENDIANQ_BYTE_ORDER 表示系统内存中数据的字节序,Q_BIG_ENDIAN 表示大端字节序,Q_LITTLE_ENDIAN 表示小端字节序。在需要判断系统字节序时会用到。 1.3.5 Q_DECL_IMPORT 和Q_DECL_EXPORT在使用或设计共享库时,用于导入或导出库的内容,后期会进行介绍。 1.3.6 Q_DECL_OVERRIDE在类定义中,用于重载一个虚函数,例如子啊某个类中重载虚函数paintEvent(),可以定义如下: 1.3.7 Q_DECL_FINAL这个宏将一个虚函数定义为最终级别,不能再被重载,或定义一个类不能再被继承。 1.3.8 Q_UNUSED(name)这个宏用于在函数中定义不在函数体里使用的参数。 1.3.9 foreach(variable,container)用于容器类的遍历 1.3.10 forever用于构造一个无限循环 1.3.11 qDebug(const char* message, …)在debugger窗体显示信息,如果编译器设置了Qt_NO_DEBUG_OUTPUT,则不做任何输出 2. 容器类2.1 容器类概述
2.2 顺序容器类Qt 的顺序容器类有 QList、QLinkedList、QVector、QStack 和 QQueue。 2.2.1 QList是最常用的容器类,虽然它是以数组列表 (array-list)的形式实现的,并基于索引访问(index-based),但是在其前或后添加数据非常快,QList 以下标索引的方式对数据项进行访问。 2.2.2 QlinkedListQLinkedList是链式列表 (linked-list),数据项不是用连续的内存存储的,它基于选代器访问数据项,并且插入和删除数据项的操作时间相同。 2.2.3 QVectorQVector提供动态数组的功能,以下标索引访问数据。 2.2.4 QStackQStack是提供类似于堆栈的后入先出 (LIFO)操作的容器类,push()和 pop()是主要的接口函数。
程序依次输出30,20,10 2.2.5 QQueueQQueue是提供类似于队列先入先出 (FIFO)操作的容器类。enqueue()和 dequeue()是主要操作函数。例如:
程序依次输出10,20,30 2.3 关联容器类Qt 还提供关联容器类QMap、QMultiMap、QHash、QMultiHash 和 QSet。QMultiMap和QMultiHash 支持一个键关联多个值,QHash和 QMultiHash 类使用散列(Hash)函数进行查找,查找速度更快。 2.3.1 QSetQSet 是基于散列表的集合模板类,它存储数据的顺序是不定的,查找值的速度非常快。 2.3.2 QMapQMap<Key,T>提供一个字典(关联数组),一个键映射到一个值。QMap 存储数据是按照键的顺序,如果不在乎存储顺序,使用 QHash 会更快。 2.3.3 QMultiMapQMultiMap 是QMap 的子类,是用于处理多值映射的便利类。 2.3.4 QHashQHash 是基于散列表来实现字典功能的模板类,QHash<Key,T>存储的键值对具有非常快的查找速度。
2.3.5 QMultiHashQMultiHash 是 QHash 的子类,是用于处理多值映射的便利类,其用法与 QMultiMap 类似。 3. 容器类的迭代
3.1 Java 类型的迭代器对于每个容器类,有两个Java 类型迭代器:一个用于只读操作,一个用于读写操作,各个Java类型的容器类迭代器如下所示,具体使用详见《Qt5.9 c++开发指南》 3.2 STL 类型的迭代器对于每一个容器类,都有两个 STL 类型选代器:一个用于只读访问,一个用于读写访问。无需修改数据时一定使用只读迭代器,因为它们速度更快。 3.3 foreach关键字如果只是想遍历容器中所有的项,可以使用 foreach 关键字。foreach 是头文件中定义的一个宏。使用 foreach 的句法是:
使用 foreach 的代码比使用迭代器更简洁。例如,使用foreach 遍历一个 QLinkedList的示例代码如下:
其他使用见《Qt5.9 c++开发指南》 4. Qt类库的模块Qt 类库里大量的类根据功能分为各种模块,这些模块又分为几大类。
Qt 基本模块是 Qt 在所有平台上的基本功能,它们在所有的开发平台和目标平台上都可用在Ot5 所有版本上是 其他的模块一般不会被自动加入到项目,如果需要在项目中使用某个模块,则可以在项目配置中添加此模块。例如,如果需要在项目中使用Qt Multimedia和Qt Multimedia Widgets 模块,需要在项目配置文件中加入如下的语句: 具体详见《Qt5.9 c++开发指南》。 |
原文地址:https://blog.csdn.net/Dasis/article/details/131621043
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:https://www.msipo.com/article-473.html 如若内容造成侵权/违法违规/事实不符,请联系MSIPO邮箱:3448751423@qq.com进行投诉反馈,一经查实,立即删除!
Copyright © 2024, msipo.com