Qt之使用quazip来压缩文件

时间:2024-03-14 15:21:22

Qt中压缩文件

我使用的是Qt5.7版本,好像5.12版本将Quazip已经集成到安装包中。http://doc.qt.io/qt-5/qtcore-attribution-zlib.html
不管5.12版本,以下是5.7版本集成quazip的方法,使用的编译工具为Qt creator.

说明

Quazip是zlib的Qt版本,即封装zlib为Quazip供Qt方便地调用。
使用时需要下载两个文件。
1、Quazip相关文件
下载地址:http://quazip.sourceforge.net/
2、zlib相关文件
下载地址:http://www.zlib.net/
我下载的zlib是编译好的文件,quazip是自己编译;
可从以下链接下载,其中包括源码以及编译后的文件
百度网盘:
链接:https://pan.baidu.com/s/1QcPSHxJGyGB4eCWuWC_WBg
提取码:hkev
CSDN:
https://download.csdn.net/download/qq_25034451/10921201

quazip编译

│ CMakeLists.txt
│ COPYING
│ Doxyfile
│ FindQuaZip.cmake
│ includes.pri
│ list.txt
│ NEWS.txt
│ quazip.pri
quazip.pro
│ quazip.pro.user
│ quazip.sln
│ README.txt
├─doc
├─quazip
└─qztest

如上是Quazip源码的第一层目录
将zlib编译后的include和lib两个文件夹直接拷入quazip目录下。
将上面目录中的quazip.pro文件更改如下:

TEMPLATE=subdirs
SUBDIRS=quazip #qztest
qztest.depends = quazip

即去掉测试代码。

并且在quazip目录下的quazip文件做如下更改:

win32 {
    headers.path=$$PREFIX/include/quazip
    headers.files=$$HEADERS
    target.path=$$PREFIX/lib
    INSTALLS += headers target
    # workaround for qdatetime.h macro bug
    DEFINES += NOMINMAX
    INCLUDEPATH +=$$PWD/include ##新加内容
    LIBS+= -L $$PWD/lib -lzdll ##新加内容
}

然后就可以编译程序了
debug模式生成libquazipd.a与quazipd.dll
release模式生成libquazip.a与quazip.dll
拷出release模式下的文件即可开始使用quazip来压缩文件了

使用方法

1、创建工程,创建lib与include目录
将quazip.a、quazip.dll、zdll.lib、zlib.def、zlib1.dll拷贝到lib文件夹
将quazip的相关h文件、zlib的相关h文件拷贝到include文件夹
目录结构如下:
├─include
│ crypt.h
│ ioapi.h
│ JlCompress.h
│ quaadler32.h
│ quachecksum32.h
│ quacrc32.h
│ quagzipfile.h
│ quaziodevice.h
│ quazip.h
│ quazipdir.h
│ quazipfile.h
│ quazipfileinfo.h
│ quazipnewinfo.h
│ quazip_global.h
│ unzip.h
│ zconf.h
│ zip.h
│ zlib.h

└─lib
libquazip.a
quazip.dll
zdll.lib
zlib.def
zlib1.dll

pro文件修改

在pro文件中添加如下代码:

INCLUDEPATH += $$PWD/include
LIBS += -L$$PWD/lib -lquazip

测试

#include "JlCompress.h"
//省略其他代码
if(!JlCompress::compressDir("F:\\mainwindow.zip","F:\\test"))
          qDebug()<<"compress failed";
else
          qDebug()<<"compress successed";

参考链接:https://blog.csdn.net/qq_37354286/article/details/78858788

若有疑问可以在下方留言,欢迎关注我的公众号CodingBL。
Qt之使用quazip来压缩文件