Qt打包发布
首先将构建设置改成release模式(debug和release的区别自行百度),构建不想生成多余文件夹就将Shadow build的勾去掉,点击构建会在release文件夹下生成一些文件和一个exe程序
将exe拷贝到某个文件夹下备用(此时的exe还不能运行,缺少相应的库)
打开,我这里选择的是: Qt 5.9.264-bit for Desktop (MSVC 2017),因为项目文件创建时选择的是 (MSVC 2017),按照相应的版本来
转到拷贝exe的文件夹下
输入命令:windeployqt 程序.exe
此时文件夹下会出现一些库,再点击exe就可以正确运行
发布
下安装载Enigma Virtual Box Software Protection, Software Licensing, Software Virtualization
点击Files Option选择文件压缩,这样生成的exe的大小会小不少,点击ok点击Process生成新的exe,完成后即可运行
踩坑记录
问题一:Qt Create 使用QtXml问题记录
在Qt 提供的文档里
需要在.pro文件里添加配置保存,然后在代码中添加头文件
还需要关键一步:qmake
右键项目qmake,不做这一步则在.pro中的配置无效
问题二:
Qt Create中构建项目默认生成新的文件夹
若不想生成新的文件夹,在右侧项目选项中将Shadow build的勾去掉
问题三:
原因:在第一个.h中include第二个.h,又在第二个.h中包含第一个.h两个头文件都彼此包含了
解决,删除.h文件中其中一种包含,在.cpp中引用
问题四:在一台电脑上使用Qt开发的项目文件,编译使用的Desktop Qt 5.9.2 MSVC2017 64bit,那么将该项目文件放在另一台只有MSVC2015编译环境的电脑上直接编译运行会报错,此时应该更改编译坏境如下图,点击现有的环境编译运行即可
问题五:main.obj:-1: error: LNK2019: 无法解析的外部符号 "public: __thiscall CFindFileForm::CFindFileForm(class QWidge
qt5中运行时出现这个问题,起因是自己新建了一个类在.h文件中,在main.cpp中include了,链接时候出了问题,解决办法,删掉debug和release文件夹,删掉makefile,重新编译。
问题六:报错:1 个无法解析的外部命令
这个问题的情况有很多,我的问题在于创建了一个子线程的类,在创建时没有点击继承父类,打算自己补上继承父类,但没有补上Q_OBJECT,导致所写的信号不能识别
问题七:在不同线程之间通过信号和槽来传递自定义数据类型QVector<Vector_pixmap>的时候,发生了错误,直接见下面代码提示:
Vector_pixmap为自定义的结构体
解决办法如下:
在进行发射自定义结构体Vector_pixmap信号的文件里,添加头文件:#include <QMetaType>
同时在构造函数中,添加注册自定义类:
//注册QVector<Vector_pixmap>类型
qRegisterMetaType<QVector<Vector_pixmap>>("QVector<Vector_pixmap>");