Qt系列文章之(三)— QObject模块 01
Qt并不是一定要用来做界面开发,其实Qt内部的很多非界面模块也十分优秀,本文从Qt的第一个基类开始介绍如何认识QObject和据此开发自己的用户类。
QObject模块介绍
QObject的帮助文档第一句这样写“The QObject class is the base class of all Qt objects.” QObject模块是所有Qt核心类(不论是界面类/非界面类)的基类,如果需要使用Qt的线程机制/信号与槽机制/事件机制/智能内存管理/动态属性机制/元编程技术,所开发的类需要直接或者间接Public集成QObject。
借助QObject的帮助文档一起了解一下Qt模块帮助如何构成和理解。几乎所有的Qt模块的帮助文档构成都是按照如下的方式组成:
- 模块类下的第一段对该模块做功能介绍,点击后面的” More…”进入模块详细介绍。
- “Header: #include ”:使用该模块需要添加的头文件;
- “qmake: QT += core” : 使用该模块需要在pro文件中添加的模块路径;
- “Inherited By:” 描述该模块被哪些模块直接继承,有的模块也会增加该模块直接继承了哪些模块;
- “List of all members, including inherited members”:点击此超链接可以进入该模块所有属性和方法描述检索列表,包括Pubic继承过来的方法和属性。
帮助文档下面会对所有的方法的和属性进行详细的介绍,注意只介绍该模块自己定义的属性和方法,继承过来的属性和方法需要到被继承的模块之中去查询。
条目 | 含义 |
---|---|
Properties | 模块属性,除枚举类属性外一般是私有属性。 |
Public Functions | 模块公共方法,可以直接在类外部和继承者调用的方法,此部分方法最重要,也是基于Qt实现面向对象编程的关键。 |
Public Slots | 公共槽函数 |
Signals | 信号,Qt一类特殊的方法,只需要申明不需要定义。 |
Static Public Members | 静态类方法,直接通过类名而不需要类实例化即可调用的方法。最典型的是信号和槽关联函数connect和disconnect |
Protected Functions | 受保护的方法,一般是特殊定义只允许自己和继承类内部调用的方法,一般多为虚函数,典型的方法是事件驱动函数,如childEvent(QChildEvent *event) |
Protected Variables | 受保护的变量,这种变量不多,最重要的是Qt 的隐式类和数据分离技术 d-pointer。每个Qt继承类包含一个QScopedPointer d_ptr指针单独指向类数据储存空间。 |
Static Protected Members |