004_Hello QT
一、 QT是什么?
狭义角度:
QT 是一套跨平台的组件开发库,它的跨平台指的是用 QT 的组件库完成的用户应用程序的代码可以在不同的平台上面编译通过,并且生成对应平台的 GUI 用户界面程序。
广义角度:
QT 是一套 C++ 集成开发环境,也就是说 QT 这套库里面除了与用户界面相关的类以为,还包含了另外的一系列的数据结构,比如常见的链表,队列等等,并且 QT 还抽象了一系列的类可以用来开发多线程,网络应用程序等等,这些类是与 GUI 应用程序没有关系的。QT 同时还支持数据库的开发,提供了数据库接口,可以方便容易的链接到当前流行的各种各样的数据库系统里。
二、 进入 QT 的世界
第一个 QT 程序
三、 QT 开发环境
通过命令行的方式编译 QT 源程序
启动 QT 命令行
进入源程序所在目录
命令:
- qmake -project(根据目录中的源码生成工程文件)
- qmake(根据工程文件生成 Makefile 文件)
- make(根据 Makefile 进行编译)
四、 编程实验(命令行方式)
Windows下的实验:
第一步:qmake -project生成工程文件
查看工程文件内容:主要用来描述了当前源代码的相关信息
第二步:qmake生成 Makefile 文件
第三步:make进行编译
第四步:进入debug文件夹运行程序
测试QT的跨平台特性
Linux下的实验:
遇上的bug:
执行qmake -project时,出现错误qmake: could not exec ‘/usr/lib/x86_64-linux-gnu/qt4/bin/qmake’: No such file or directory解决办法
第一步:qmake -project
第二步:qmake
第三步:make
第四步:运行可执行程序
除了窗口风格不同外,在功能上面和Windows上编译出来的 QT 应用程序的界面是一样的。也是一个主窗口和一个按钮,并且点击按钮没有任何作用,那是因为我们还没有映射消息处理函数。
五、 QT Creator
命令行的编译的确比较简单,但是当今的开发使用命令行就显得比较低效了,于是在当代的软件开发里,我们一般都会选取一套 IDE(集成开发环境)
QT Creator 是一套可视化的集成开发环境,它提供了强大的代码编辑功能和强大的调试功能。
六、 调试的基本方法
Log调试法
在代码中加入一定的打印语句,这些打印语句就会打印程序的状态以及关键变量的值。比如:可以在一个函数的开始位置打印一个语句(function begin),在函数返回前打印(function return)语句,如果这两个打印语句都成功打印,那么对应的函数被成功的调用了。
断点调试法
对于一些复杂的函数,Log调试法并不完全奏效。就需要使用断点调试法,断点调试法一般都需要集成开发环境的支持。
在可视化的开发环境中对应的代码行打上断电,当程序运行到断点所在行的时候,程序就会暂停运行。这时我们就可查看当前函数的调用栈是什么,当前局部变量的值分别是什么。
在需要的时候可加上条件断点,当条件满足才暂停程序的运行。有了条件断点之后就可以将 BUG 的出现缩小到我们某一个分析的范围之内
补充:为什么常常听说在工程开发里面嵌入式开发难度比较高?
其实比不是嵌入式开发的程序比较难,而是因为嵌入式开发的调试环境比较差,那么嵌入式开发比起桌面开发,比起 web 开发来说,它的调试环境是比较弱的,所以说给人的印象是嵌入式开发难度高。
七、 编程实验(QT Creator)
预备工作:回到Windows之前的文件夹,把以前生成的文件都删掉,只剩Main.cpp文件。
第一步:还是用命令行的方式使用(qmake -project)生成一个工程文件。
第二步:启动 QT Creator,通过工程文件打开工程,并进行编译
第三步:使用调试的方法运行
第四步:调试运行
八、 调试实验
Log调试法
断点调试法
1. 设置断点
2. 条件断点
编辑断点
设置条件断点
当条件满足,第16行的断点就停下来了。若真实的调 BUG ,就可以看看这个时候的局部变量,函数调用栈是否有意义。
在Linux上的调试几乎和Windows一模一样。
九、 总结
1. QT 是一套跨平台的 C++ 界面开发库。
2. 既可以通过命令行的方式来开发 QT 应用程序,也可以通过 QT Creator 来进行可视化的 QT 应用程序开发。
3. QT Creator同时支持Log调试法和断点调试法,并且断点调试法里还支持条件断点的调试法。