1.QT5基本框架
QT5引入了模块化的概念,将实现众多功能的QT库细分为各个模块,也就是说一个模块中包含了实现某种功能的众多C++类库。QT4也有模块的概念,但没有QT5划分的细。
2.QT5模块架构
QT模块的3个大的部分:Qt Essenrtials(Qt基本模块)、Qt Add-Ons(扩展模块)、Qt Tools(开发工具)
基本模块:定义了适用于所有平台的基础功能,在 Qt 5 中,它们将保持源代码和二进制
兼容,因此所有程序都需要使用基本模块提供的功能(不一定需要使用所有的功能)。其中,
基本模块中的 QtCore 模块是基础,所有其他的 Qt 模块都要依赖于这个模块;
扩展模块:是针对某种特定目的的模块,扩展模块可在某个特定平台上使用,或者所有平
台上都可使用(但不一定通用);
各模块间的依赖关系:
理解模块和类:概括地说,模块包含的范围更大,它涵盖了类,模块是以Qt开始的,类是以Q开始的。
3.QT的元对象
元对象系统是 Qt 对原有的 C++进行的一些扩展,主要是为实现信号和槽机制而引入的,
信号和槽机制是 Qt 的核心特征。在没有信号槽机制的时代,C++对象间的交互一般使用回调函数来实现。使用某对象时,用指针指向另一个对象的函数,这个函数就称为回调函数。使用回调函数有个弊端,当某个对象被多个对象通信时,需要一个容器来存放多个对象的回调函数。维护这个容器使得代码编写效率低、扩展性弱。
基于Qt元对象系统扩展的信号槽机制,使得处理对象间通信变得更加高效、灵活。
Qt 的元对象系统提供的功能有:对象间通信的信号和槽机制、运行时类型信息和动态属
性系统等。
另外一篇博文上有关元对象的部分介绍:
博文链接:
https://blog.csdn.net/yao5hed/article/details/81142341?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-11.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-11.control
知乎上一篇关于QT元对象系统的介绍也比较准确,推荐:
https://zhuanlan.zhihu.com/p/61303678
4.QT的反射机制
先上两篇个人认为描述的比较好的博文:
https://blog.csdn.net/yzl11/article/details/49464033?locationNum=13&fps=1
https://www.cnblogs.com/findumars/p/8030601.html
并借用文章中的一句话:相对于Java天生的这一特性,C++并不具备;但进入到Qt的领域,这一切都边得简单自如了。来理解反射机制的作用。
反射机制:是指在运行时,能获取任意一个类对象的所有类型信息、属性、成员函数等信息的一种机制。
作用:编写足够通用的代码来处理所有具有自我描述能力的类。
使用条件:
原理: