今天开始学习Qt!
环境:VMware® Workstation 14 Pro,VS2017 ,Qt5.12.6
安装:
- 安装VS2017:
- 安装Qt5.12.6:qt-opensource-windows-x86-5.12.6.exe 链接:http://download.qt.io/archive/qt/5.12/5.12.6/
- 安装VS插件:Qt Visual Studio Tools 2.4.2
- 设置VS2017下Qt环境:
安装完成之后,直接打开VS2017,新建项目如下图,直接运行即可。
注意:安装完成后,可能会出现编译成功,但是会有红色下划线提示未定义标示符问题,如下图所示:
这是重启一下VS就好了,网上也有其他方法比如头文件目录包含Qt库,也可试一下。
编码:VS2017默认编码是GBK,Qt使用编码UTF-8 无Bom,否则中文乱码
方法-:所以需要设置源代码文件编码格式:UTF-8 无签名在列表后面!
使用UTF-8 无签名编码后,标点符号请使用英文,否则报错:
方法二: 代码文件开始时加上 #pragma execution_character_set("utf-8")
方法三: 用到中文的地方pDialog->setWindowTitle(QStringLiteral("模式对话框"));这样加的地方比较多....
EXE打包:因为Qt默认是动态库,所以生成的exe依赖于某些Dll,需要把用到的Dll文件收集起来
第一步:收集所需Dll, 新建批处理文件,内容如下,分别设置exe路径和Qt Bin路径,双击批处理文件即可。
@echo off
set EXE_PATH=C:\QtProject\QtGuiApplication1\x64\Release\QtGuiApplication1.exe
set QT_BIN_DIR=C:\Qt\Qt5.10.0\5.10.0\msvc2017_64\bin
set PATH=%QT_BIN_DIR%;%PATH%
windeployqt %EXE_PATH%pause
第二步,此时已经收集完所需要的Dll了,exe文件已经可以正常使用,
但存在许多Dll文件,我们可以借助于工具 Enigma Virtual Box 进行打包:
此时生成的exe文件就可以单独使用了。
不建议使用Qt静态库,编译静态库太麻烦,浪费时间!
但使用动态库生成的exe真的是有点大啊!!!
遇到的问题:
1.EXE添加图标:
有时候可能会出现这个问题,我认为这是VS2017的BUG,如果出现下面问题,可以尝试一下。
VS2017新建Qt项目时,如果勾选自动添加图标(等同于手动添加图标资源),编译时会报错:
解决办法:项目->属性->链接器->所有选项 (这个办法有时候有效,有时候无效)
子系统是 窗口类型,更改为控制台,重新生成解决方案编译成功,然后再更改为窗口,重新编译成功!
然后添加rc资源文件,.exe文件就有图标了。
2. VS2017编写Qt项目时,自动提示功能不友好,可以将C/C++ 附件包含目录的头文件路径删除,然后重新添加。
不过上面方法很多时候不行,最后发现Qt项目会自动添加包含目录$(Qt_INCLUDEPATH_),于是在计算机环境变量上添加下图即可:
3. 有的时候VS2017 添加QtClass会出现编译错误,但代码的确是没有问题的,关闭VS可能就好了。
总之,在虚拟机内使用VS2017编写Qt经常会出现奇怪的问题,记录在此,供以后查找学习。