一、了解
关于QT的一些了解:QT是什么,可以做什么,与其他GUI库的对比,QML概念。
二、下载
参考:http://c.biancheng.net/view/3851.html,选一个国内镜像下载(比如中国科学技术大学),有5.9,5.12,5.13,5.14版本。目前官网长期支持的是5.12版,我下载的5.9版本exe文件,反正是为了学习目的,没有太大差别。
三,安装
按照 http://c.biancheng.net/view/3858.html 上的步骤,注意,5.9.0版本可以跳过Login,之后的好像就不行了,需要输入邮箱和密码。安装组件在图示基础上多勾选了msvc2017 64bit,教程中有相关组件的说明,可以自行决定勾选。
注意:Windows上安装的QT只能使用MinGW 32bit编译器,只能编译32位程序,而使用msvc2017 64bit编译器可以编译64位程序。此外 msvc2017 64bit 会在VS中写QT程序的时候用到。
这些模块都是可以改的,先不安装也没关系。
四、HelloWorld
Qt Creator介绍参考:http://c.biancheng.net/view/1804.html,类似VS,手感略差。
按教程:http://c.biancheng.net/view/1817.html 写一个HelloWorld项目。
注意构建目录这块,建议使用默认的构建目录,不然自己手动改了后多个编译器时比较麻烦。
设计好UI界面后然后点击左下角小锤子编译,注意选择的编译器,然后运行,分别生成目录如下。
MinGW 与MSVC的区别:https://blog.csdn.net/a8039974/article/details/80573034
注意:然后你就会发现点击运行按钮是正常的,但是直接在release目录下编辑运行exe时缺了好几个动态库
这是由于安装的QT是动态编译的,也就是默认使用动态链接库,要想像MFC一样生成一个单独的exe,需要自己编译相关静态库,目前并不需要,以后有机会再编译。
而从对应的编译器bin目录下把缺失的动态库复制过来后发现msvc编译器生成的可以正常运行了,而MinGW的仍然不行,因为这种方法并不规范,见下一步:部署
五、部署
动态编译的QT程序需要使用对应的部署工具部署后才能正常运行,部署过程中会把需要的所有动态库依赖拷贝到当前exe目录下
参考:https://blog.csdn.net/qq_42701420/article/details/93787394
windeployqt HelloWorld.exe
注意:MinGW和MSVC编译的一定要用对应的部署工具,不能混用,否则会出现错误,程序无法启动,部署结果如下,然后点击exe就可以正常运行(关于程序图标下面再说)。
MSVC编译器的部署结果要比MinGW的少一点
注意:其实MSVC编译器生成的exe只要如图所示的三个动态库就可以运行,但是部署工具会加入很多其他的(原因下面再说)。
六、VS中使用QT
参考:https://blog.csdn.net/yxy244/article/details/94971602 安装好vs2017 QT插件,然后配好QT msvc编译器目录,就可以创建项目了
注意:我在VS2017使用QT插件时遇见 https://blog.csdn.net/u013394556/article/details/89957175 的插件加载错误,原因是版本不匹配,使用第二种方案,更新VS后解决
然后创建 HelloQt项目
模块选择:创建项目时会要求选择需要的模块,有点像springboot,默认选择三个,这就是为什么上面msvc编译后只需要那三个dll就可以运行的原因
当然这个模块可以在后面配置,从如下位置:
注意:VS的这些属性配置是写在ProjectName.vcxproj文件中的, Qt Creator是直接写ProjectName.pro文件,两者差不多
程序图标:下一步时勾选添加默认图标会生成对应的资源文件并使用
资源文件:
同理,VS的两个资源文件可以用在Qt Creator中,参考:https://blog.csdn.net/aicamel/article/details/81046047
创建完成如图所示
注意:在刚开始时Debug模式下可能会包图示的头文件找不到错误,原因是改头文件需要编译From Files后生成,不影响程序编译,或者切换到Release版本后就不会报错。
然后对生成的exe文件使用 msvc windeployqt部署(可以先把三个动态库拷过来,错了再说)。
七、结束
VS和Qt Creato效果是一样的