Qt5.9 C++开发指南 学习(一)

从昨天开始看了《Qt5.9 C++开发指南》这本书来学习Qt。记录一下学习历程。

Qt是一套应用程序开发类库,但与MFC不同,Qt是跨平台的开发类库。
项目名称节点分组管理着项目内各种源文件,分别为以下几项:
Headers分组,项目内所有头文件,新建文件下默认头文件为主窗口类头文件。
Sources分组,项目内所有C++源文件(.cpp),新建文件下默认源文件是主窗口类的实现文件,与上头文件对应,main.cpp是主函数文件,也是应用程序的入口。
Forms分组,项目内所有界面文件,新建文件下默认界面文件是主窗口界面文件,界面文件是文本文件,使用XML语言描述界面的组成。
.pro文件是项目管理文件,文件名就是项目的名称。项目管理文件用于记录项目中的一些设置,以及项目包含文件的组织管理。
窗体相关的文件
项目编译后会在目录下自动生成一个文件ui.test3.h,对于一个窗体就有4个文件了:、
1. test3.h。定义了窗口类的头文件,定义了类test3。
2. test3.cpp。类test3的实现代码。
3.    test3.ui。窗体界面定义文件,是一个XML文件,定义了窗口上所有组件的属性设置、布局,及其信号和槽函数的关联等。
4.ui_test3.h。对test3.ui编译后生成的一个文件,定义了类Ui_Test3用于封装可视化设计的界面,自动生成了界面各个组件的类成员变量定义,定义了setupUi()函数,用于创建各个界面组件,并设置其属性,设置信号与槽的关联,定义了namespaceUi,并定义了一个从Ui_Test3继承的类Test3Class。
信号与槽:
信号就是在特定情况下被发射的事件。例如PushButton最常见的信号就是鼠标单击时发射的clicked()信号.GUI程序设计的主要内容是对界面上各组件信号的响应,只需要知道什么情况下发射哪些信号,合理的去响应和处理这些信号就可以了。
槽是对信号响应的函数。槽函数与一般函数不同的是:槽函数可以与信号关联,当信号被发射时,关联的槽函数被自动执行。
信号与槽函数关联是用connect(sender,SIGNAL(signal()),receiver,SLOT(slot()));
sender是发射信号的对象名称,signal()是信号名称。信号可以看作是特殊的函数,需要带括号,有参数时还需指明参数。
receiver是接收信号的对象名称,slot()是槽函数的名称。需要带括号,有参数时还需指明参数。
SIGNAL和SLOT是Qt的宏,用于指明信号和槽,并将它们的参数转化为字符串。

注意:
1.一个信号可以连接多个槽。当一个信号与多个槽函数关联时,槽函数按照连接时的顺序依次执行。当信号和槽函数带有参数时,在connect()函数里要写明参数的类型,但可以不写参数的名称。
2.多个信号可以连接同一个槽。
3.一个信号可以连接另外一个信号。
4.严格情况下,信号与槽的参数类型和个数要一致,至少信号的参数不能少于槽参数。如果不匹配会出现编译错误或运行错误。
5.在使用信号和槽的类中,必须在类的定义中加入宏Q_OBJECT。
6.当一个信号被发射时,与其关联的槽函数一般立即执行,就像正常调用一个函数一样。只有当信号关联的所有槽函数执行完毕后,才会执行发射信号处后面的代码。

遇到的问题:
第一次接触遇到了各种各样的问题,有的解决了,有的待解决。。。
1.QtCreator里创建文件无法选择kit(构建套件)导致无法在QtCreator中创建文件。(后来在VS2015中进行操作,也可以正常操作)。【按照说明下载了SDKwindows8.1依然不好使】
2.可视化UI设计中:右键组件没有“转到槽”选择项,(最后只能自定义) 编辑信号槽clicked()右边没有accept()、exec()、open、reject()。(按照书中写示例代码写关于信号和槽函数部分由于无法直接生成,后续代码都是自定义写出来。)
3.在类中自定义槽函数时忘记加slots,----private slots:
4.书中ui是指针,我在VS2015操作是自动生成的是对象,ui.XXX依然可以调用不影响。
5.对于可视化界面的操作多熟悉就可以完成,按照规范添加各个组件
6.昨天看的忘了还有啥了,可能都解决了…
Qt5.9 C++开发指南 学习(一)_第1张图片
Qt5.9 C++开发指南 学习(一)_第2张图片

Qt5.9 C++开发指南 学习(一)_第3张图片

Qt5.9 C++开发指南 学习(一)_第4张图片
Qt5.9 C++开发指南 学习(一)_第5张图片

你可能感兴趣的:(Qt5.9 C++开发指南 学习(一))