1、下载QT安装包
或者http://download.qt.io/archive/qt/
选择一个你需要的版本,例如 5.10
![](https://i-blog.csdnimg.cn/blog_migrate/3f792baa38edd825dda4cd6c13fa96b9.png)
点击进去后,选择对应操作系统的安装包下载,例如qt-opensource-windows-x86-5.10.0.exe
2、安装QT
安装包下载好后,双击运行,根据提示一步步往下走即可
![](https://i-blog.csdnimg.cn/blog_migrate/23ecec879800f53ad75c0998297764f1.png)
在选择要安装的组件时,可能需要注意了,可以用两种编译器编译QT程序,一个是Visual Studio,另外一个是MinGW,是Minimalist GNUfor Windows的缩写。
如果选择了Visual Studio作为编译器,就必须安装对应版本的Visual Studio,刚开始我是安装Visual Studio2015,但是发现VS 太大了,十几个G,安装之后C盘所剩无几。虽然安装时选到了其他盘,但是大部分仍然还是被装到了C盘,卸载的时候也很无奈,得从控制面板中一个个卸载。
虽然安装QT时选择了MSVC组件,但是Visual Studio编译器并没有一起安装,因为Visual Studio是微软的软件,QT是不敢把它集成到自己的安装包中,但是如果选择了MinGW,就会在安装上MinGW编译器,因为MinGW是开源的。
3、创建一个工程
安装好后,双击QtCreator运行
![](https://i-blog.csdnimg.cn/blog_migrate/c7d4101db8c0eb673ad94ebc2c0feb18.png)
选择新建一个工程,可以选择Qt Widgets Application
![](https://i-blog.csdnimg.cn/blog_migrate/18873635f95a39bf9be2ff6713296e4a.png)
选择Qt Widgets Application 模版后,编译运行起来就能看到一个简单的界面
![](https://i-blog.csdnimg.cn/blog_migrate/fb4009f94a410482cd8cd34c150df53e.png)
点击左下角的三角图标编译和运行你的程序,这时候就会弹出一个窗口,如果是要编译出正式版本的exe,可以编译出release版本
![](https://i-blog.csdnimg.cn/blog_migrate/d5c5d0a49b63b5b4fa4fc2da1c1c486e.png)
在项目界面中的构建配置中选择成release,默认是debug,release版本编译出来的exe会比debug版本的文件要小。
![](https://i-blog.csdnimg.cn/blog_migrate/bedb2021ef7a4e216365e7fdbc142821.png)
同样的点击三角形运行图标后,会在对应的目录下生成exe文件,这个exe文件双击之后还是无法运行的,因为缺少一些dll文件,那么我们怎么知道还缺少什么dll文件,可以用QT自带的工具来完成。
运行该该程序
![](https://i-blog.csdnimg.cn/blog_migrate/06e53a8060a4e320126080120e6deeb7.png)
切换到一个空目录下,同时把QT编译出来的exe文件拷贝到这个目录下,然后输入windeployqt ProgramName.exe
![](https://i-blog.csdnimg.cn/blog_migrate/5bde6d8bcdc3d78ed9096974c4266f0b.png)
运行完之后,会在该目录下生成需要的文件,这时再双击exe文件,就可以之前运行程序了,同样把该目录下的所有文件拷贝到其他电脑上,也可以直接运行。
如果觉得在命令窗口中输入命令很麻烦,也可以使用如下脚本来帮助生成依赖文件
qt_pack.bat
-
@echo
off
-
-
rem
set current dir
-
set cur_dir=%cd%
-
-
rem Setting up environment
for Qt usage...
-
set PATH=D:\Qt\Qt5
.10
.0\
5.10
.0\mingw53_32\bin;D:/Qt/Qt5
.10
.0/Tools/mingw530_32\bin;%PATH%
-
-
rem
set windeployqt tool path
-
set windeployqt=D:\Qt\Qt5
.10
.0\
5.10
.0\mingw53_32\bin\windeployqt.exe
-
-
for /f
"delims=\" %%a
in (
'dir /b /a-d /o-d "%cur_dir%\*.exe"') do (
-
for /f
"delims=.exe tokens=1,*" %%i
in (
"%%a")
do (
-
-
rem
if dir
is exist ,remove firstly
-
if exist %cur_dir%\%%i (
-
rd /s /Q %cur_dir%\%%i
-
)
-
rem create dir
-
md %cur_dir%\%%i
-
-
rem move exe file
to designated dir
-
move %%a %cur_dir%\%%i\%%a
-
-
rem execute windeployqt
-
%windeployqt% %cur_dir%\%%i\%%a
-
)
-
)
-
-
rem wait
for input
-
pause
将上面的内容拷贝到一个.bat的脚本文件中,放在一个空目录下,把QT编译出来的exe也放在这个目录下,运行脚本即可
上述脚本中set PATH 需要改成QT对应的安装目录,注意后面的路径是/
set PATH=D:\Qt\Qt5.10.0\5.10.0\mingw53_32\bin;D:/Qt/Qt5.10.0/Tools/mingw530_32\bin;%PATH%
脚本中的 windeployqt 也需要改成QT对应的安装目录
set windeployqt=D:\Qt\Qt5.10.0\5.10.0\mingw53_32\bin\windeployqt.exe
编写脚本遇到的问题
for /f "delims=.exe tokens=1,*" %%i in ("%%a")
遍历当前目录下的exe文件,依次调用windeployqt 给对应的exe 生成依赖文件,需要先在当前目录下创建一个文件夹,文件夹的名称就是exe对应的文件名,外面的一个for循环可以得到exe的文件名和后缀,例如Qwind.exe,这个值存在%%a中,我需要把%%a中的.exe去掉,只保留Qwind,所以写了第二个for,用于得到.exe前面的字符串。
一开始写成 in (%%a) ,结果死活运行不正确,后面加了单引号'%%a' 也不正确,最后改成了双引号才没有问题。