Qt中使用的C++知识和技能-你必须要了解的
如果你不确定在使用Qt编程时自己所掌握的C++知识是否够用,这一节的内容会帮到你。这里给出了Qt自身以及在使用Qt进行编程时涉及到的C++知识,因此,通过阅读本节,你会了解你是否缺少一些C++技能。
如果你想对这里提到的C++特性做进一步的了解,我们推荐你看Gregory Satir和Doug Brown撰写的《C++:The Core Language》,该书由O’Reilly出版。这本书重点讲解了C++语言最为重要的部分,并且涵盖了本节提到的所有内容。
- 对象和类
当然的,Qt中使用到了类-Qt是一个类库。你需要知道某个类的成员函数的用法。而且,你需要掌握怎样写你自己的类,以及怎样继承一个已经存在的类,从而产生一个新的类。不过,你无需成为擅长类的等级设计的高手。对于GUI 程序设计,在这里我们会提供足够丰富的信息来帮助你构建自己的知识体系。
- 存取方法
Qt中大量的使用了存取方法,它们用来得到或者设置类的私有变量的值。保存方法通常以set...这样的型式出现(例如,setText()),而获取方法则不带有任何前缀(甚至没有get-,例如,text())。在Qt中,这是一个基本的东西(惯例,译者注);没有复杂的东西在里面。
- 多态和虚函数
Qt中使用虚函数来通知你的(程序中的)对象,某些低级的事件(就像鼠标点击、重绘操作那样的事件)发生了,所以你必须要适应这些函数(的用法)。不像其他的工具包或者类库,Qt主要使用创新的信号/槽机制而不是虚函数来作为对象间通信的主要的方法。这个特性对于Qt而言至关重要,所以在本书的后面章节中将会介绍它。
- 继承
毫无疑问,Qt中用到了继承,但是其中最重要的部分是建立在单继承之上的。多继承很少用到-实际上,它的使用少到你很可能从来没有遇到过它。如果你对那个“虚拟继承”的含义不理解的话,放心吧:Qt中根本就没有用到它。
- 运算符重载
Qt重载了一些运算符,但通常这些运算符只是(在背后)工作而已。举例来说,你可以把一个QString对象赋给某个函数,期望得到一个const char*,这是由于一个强制转换运算符的介入以把你的QString对象转换为一个字符指针。
- 模板类
你不能使用一个不理解模板或者没有完全实现模板的编译器来编译Qt。如果你不想使用集合类,在你自己的代码中使用模板就不是必需的。但是模板是非常有用的,所以你还是要尽量的熟悉基本的模板的使用。并且,这个学习起来并不复杂。
- bool数据类型
Qt中经常用到bool数据(对于C++而言,是较新的类型)类型。不幸的是,一些老旧的编译器不支持bool数据类型,并且也不能识别true和false这两个关键字。这时候,你可以转而使用Qt提供的TRUE和FALSE宏来替代。在本书中,我们使用true和false,但如果你手头使用的是那些老旧的编译器,你需要总是使用TRUE和FALSE代替它们。
- 其他特性
Qt没有使用那些尚未被所有编译器所支持的以及新的C++特性,如名字空间、运行时类型识别(RTTI),新的类型绑定等等。Qt也不使用标准模板库(STL),但你可以在自己的Qt程序中使用它。