本篇开始将会对自己Qt开发做一个系统性的学习总结,涉及到了两个学习的资源,想法的按照C++开发指南框架和顺序将两份资源总结到一起,形成基础框架之后,慢慢补充。
释义:“01-0_”表示第一章的第0篇,要完成一章的学习就需要把“01-x_”都看完
01-0_Qt 5.9 C++开发指南_认识Qt
1. Qt简介
Qt是一套应用程序开发库,但与MFC不同,Qt是跨平台的开发类库。跨平台意味着只需要编写一次程序,在不同平台上无需改动或只需少许改动后在编译,就可以形成在不同平台上运行的版本。
2. Qt的获取与安装
参考《Qt 5.9 C++开发指南》中对应内容选择合适的版本进行下载安装,Qt下载地址,大家可以自行百度,本人目前使用的时Qt 版本信息如下:
我选用的时MSVC2017编译器,对应的电脑上就需要安装VS2017,建议勾选时勾选中“Sources”,这样在后期可以查看Qt的源代码,帮助理解,其他模块根据自身需要来选择。
3. Qt Creator的初步使用
3.1 Qt Creator的界面组成
参考《Qt 5.9 C++开发指南》中对进入Qt Creator的界面进行了介绍。
3.2 Qt Creator的设置
单击Qt Creator 菜单栏的“Tools”->“Options”,对其中的参数进行设置
4. 新建一个Hello World项目
4.1 创建一个Qt Widgets Application
创建项目过程中各种选项的含义,请参考《Qt 5.9 C++开发指南》内容。
4.2 创建Qt项目中遇到的配置问题
4.2.1 编译器和调试器未设置
在我创建项目刚进Qt Creator报如下错误:
同时可以看到鼠标放到“Kit”显示调试器未设置
,具体参考QT编译器的选择进行设置,大致意思即为例如x86代表本机和目标及都是x86,x86_amd64代表本机是x86,目标端是amd64
“调试器”处刚开始没有选项,可以参考“调试器未设置”的解决方法_QtCreator初使用进行调试器的配置,后来查看了其他解决方案之后觉得还是先参考安装的QT中的MSVC编译器没有默认调试器(工具中选项窗口中构建组件前带有黄色感叹号)解决办法使用默认调试器,我这里还是按照第一种方法设置的,应该也不影响,后期有问题了再说。
关于为什么会出现没有调试器的原因,网上有解释说是因为MSVC的调试器是微软的,Qt不能包含微软的组件,但是MinGW是Qt自己的,因此一般如果采用MinGW的编译器就不是报这种错误
“编译器”和“调试器”处最终的设置如下,此时显示正常。
4.2.2 配置环境变量
编译成功,运行的时候报出:
The process was ended forcefully. E:/MyselfCode/Qt5.9GuidBook/Chapt1/Sample1_HelloWorld/build/debug/Sample1_HelloWorld.exe crashed.
此时exe已经生成,至对应目录双击exe文件,显示缺少“xxx.dll”,猜测是没配置环境变量,因为运行程序时程序是先按照电脑的环境变量来搜索动态库等文件的,在环境变量中设置Qt的bin文件地址。
4.2.3 “清除”->“执行qmake”->“构建”
当执行完以上操作,如果点击“运行”还是报错,可以试着按照以下步骤:“清除”->“执行qmake”->"构建"重新进行编译之后再点击“运行”
没有写任何代码情况下,运行之后显示如下,就显示目前Qt Creator配置正常。
4.3 是否勾选“Shadow build”的区别
4.3.1 勾选“Shadow build”
默认勾选,且创建与项目文件夹地址同级的文件夹保存生成的文件,新建的文件夹名包含你使用的编译器
4.3.2 不勾选“Shadow build”
前期工作:当从别人那拷过来程序在自己的Qt Creator上也是同样操作,需要重新配置编译器信息等
- 删除生成的
.pro.user
文件(此文件保存项目的设置信息,不删除的话你打开编译运行,使用的就会是文件中保存的设置,跟你自己的编译器等可能是不匹配的) - 删除生成的
build-Sample1_HelloWorld-Desktop_Qt_5_9_4_MSVC2017_64bit-Debug
文件夹
不勾选“Shadow build”
源代码内目录变化:生成的东西都到一个文件夹,但是整体看起来很乱
"Run"中可执行文件的地址也被Qt Creator改为对应的地址
4.3.3 “Shadow build”并自行创建保存生成文件的文件夹
另外因为后期我只会使用MSVC2017编译程序,因此我习惯于采用在源代码同级目录创建“build”文件夹来装目标模块,可执行文件等,这样可以使得源代码和生成的文件可以在一个文件夹中。操作如下:
-
创建“build”文件夹
-
设置“Shadow build”
编译运行之后,build文件夹内部如下图:debug/release内为目标模块和可执行文件
双击“mainwindow.ui”文件就可以打开集成到Qt Creator中的Qt Designer,进行UI的手动操作
编译完后,需要人为指定"Run"的地址,也就是build里面的对应的debug/release内的可执行文件
把Label拖入界面中,设置内容为"Hello Wold",编译运行后:
4.3.3.1 在QMainWindow中手动拖入控件的问题及解决方法
为什么不显示添加到QMainWindow中写有“Hello World”的QLabel呢?怎么回事呢?
自己先做做尝试:
- QWidget中手动添加Label的话是编译运行时可以显示的;
- 使用代码在QMainWindow中添加Label,显示也是可以的
那到底是怎么回事呢?具体解决方法可以参考:Qt在ui设计中拖的控件界面,编译运行后无法显示问题。,将“项目”中的“Shadow build”的勾选去除,再运行就可以了
4.3.4 在QMainWindow的项目是否设置勾选“Shadow build”的总结
鉴于上面的demo,以后如果是关于QMainWindow的项目,我个人可能还是会采用勾选“Shadow build”,不修改“Run”中地址,使用自动生成带有编译器信息并于创建源代码文件夹同级目录这种形式。
5. 在Visual Studio里使用Qt
在Qt Creator中可以使用MSVC 编译工具对Qt项目进行编译。若有人比较习惯于使用 VisualStudio,或某些项目必须使用 Visual Studio,也可以在 Visual Studio 里创建和管理 Ot 程序项目。要在 Visual Studio 中使用 Qt,需要安装一个 Visual Studio 的 Qt 插件,这个插件程序由 Ot 公司提供。
5.1 下载安装插件
点击下载,显示“计划安装”,此时提示需要关闭所有VS窗口,关闭之后,就会弹出下面的界面,按照提示操作,就会进行安装
安装完后重启就会在菜单栏显示如下:
5.2 配置MSVC的信息
5.3 创建Hello World项目
5.4解决无法打开.ui文件的方法
按照默认选择后进入,此时我双击.ui
文件,Qt Designer出现一会之后,会报如下问题
解决方法参考:解决VS打不开xxx.ui文件,xxx.ui无法打开文件,需要指定.ui
的打开方式,手动拖入QLabel,并写入“Hello World”
F5编译运行之后
5. 使用Qt Creator还是VS的一些建议
简单一些就是看个人和公司习惯,VS的优势是有很多库可以直接用,但是只能使用MSVC的编译器(其他的可能也可以,但是我没用过),Qt Creator可以使用多种编译器,方便构造大项目,具体可以参考我的Qt构建大型工程详细指南(父子项目框架搭建;项目配置:global.pri文件、编译及exe保存地址;动态库链接方法;封装模块添加;多个子工程exe生成;QMWin类中添加可视控件;项目间全局变量),比较灵活,但是有时候灵活的容易出错。