文章目录
将程序的资源文件打包在程序的应用程序内,能够使程序保持更大的稳定性,本文围绕qrc资源文件的编辑,rcc文件打包,最后示范如何在exe或者dll上调用。
1.qrc文件编辑
- 1.qrc文件编辑
- 2.将qrc文件转位rcc
- 3.资源使用
- 4.ZIP压缩和解压
- 4.1.解压
- 4.2.压缩
- 5.错误
- 6.作者答疑
qrc文件本身内容是个xml文件,如下所示:
Resource/Install20220821.zip
实际上,它有许多规则,如何简单使用?可以用qrceditor.exe这个软件来编辑。下载路径。
2.将qrc文件转位rcc将Qt Bin所在路径临时添加入系统PATH目录,脚本如下所示:
Set PATH=%PATH%;E:\OpenSource\QT\vs2017Qt\Qt5_9_2_VS2017_Static_64\bin
将qrc文件转为二进制文件,代码如下所示:
rcc -binary QtInstallVS2017A.qrc -o QtInstallVS2017A.rcc
rcc -binary QtInstallVS2017.qrc -o QtInstallVS2017.rcc
3.资源使用
打包之后的资源如何使用,需要在程序中注册。如果与项目默认文件名一致,会打包到exe文件,且不需要注册。
bool rlt=QResource::registerResource("QtInstallVS2017A.rcc");
if (rlt) {
QFile file(":/File/Install20220821.zip"); //":/前缀/文件名"
if (file.open(QIODevice::ReadOnly)) {
int k = 0;
}
}
注意:资源文件放在项目所在目录,而不是解决方案所在目录。
4.ZIP压缩和解压在Qt中使用内置的压缩和解压模块,需要在模块中加载gui-private,如下图所示:
然后非常简单就能解压文件,如下所示:
#include "QtGui/private/qzipreader_p.h"
#include "QtGui/private/qzipwriter_p.h"
//解压文件到文件夹
QZipReader reader(srcZipFilename);
reader.extractAll(dstFolder);
4.2.压缩
将文件夹压缩为zip文件。代码如下所示:
#include "QtGui/private/qzipreader_p.h"
#include "QtGui/private/qzipwriter_p.h"
#include
#include
#include
#include
#include
static bool QZipWriterEx(QZipWriter *writer, QString tmpPath, QString basePath)
{
QDir dir(tmpPath);
QFileInfoList fil = dir.entryInfoList();
foreach(QFileInfo info, fil)
{
if (info.fileName() == "." || info.fileName() == "..")
continue;
if (info.isFile())
{
QFile upfile(info.filePath());
upfile.open(QIODevice::ReadOnly);
QString fileName = info.filePath().mid(basePath.size() + 1, info.filePath().size());
writer->addFile(fileName, upfile.readAll());
//qDebug()
关注
打赏
热门博文
- Adobe illustrator插件开发-SPInterfaceSuite-插件A向插件B传递消息-插件通信-AI插件开发
- javascript-ztree-树形控件-初始化-加载节点数据-节点数据获取
- Adobe illustrator插件开发-坐标系统-AIHardSoftSuite-画板坐标-页面坐标-AI插件开发
- Adobe illustrator插件开发-AIUIDUtilsSuite-AIUIDPoolSuite-AIUIDSuite-AIUIDREFSuite-Art唯一标识符与索引-AI插件开发
- C++-逆向分析-类的成员函数地址与对象地址动态绑定-this指针-成员函数和成员虚函数反汇编解析
- C++-逆向分析-结构体和类-内存布局-this指针-静态数据成员-对象作为参数和返回值
- Adobe illustrator插件开发-命令名称-AddCommand -AI插件开发
- Adobe illustrator插件开发-事件-PlugPlugAddEventListener-向系统注册事件-AI插件开发
- Adobe illustrator插件开发-ole拖拽粘贴交换数据格式-RegisterClipboardFormat函数-AI插件开发
- Adobe illustrator插件开发-所有模块列表-内部存在大量非公开的Suite-AI插件开发