Qt内置了zlib库,提供了便捷的压缩与解压函数:qCompress,qUncompress
https://doc.qt.io/qt-5/qtcore-attribution-zlib.html
制作与解压zip文件,因为能调用Qt内置的zlib库,所以非常容易实现。
Demo
拖入zip文件,即解压;拖入文件或文件夹,即压缩成zip文件。
下载
(Win环境下,Qt5.15、6.6 编译通过)
备注
源码里的minizip就是出自zlib库。
将这些文件里的 #include "zlib.h" 替换成 #include 就实现调用Qt内置的zlib。
注意
zip格式是有缺陷的,它并没有规定包内文件名(路径)必须是UTF8格式。
该Demo采取的是Local8Bit,这意味着在Win里是GBK,而Linux里是UTF8
所以有可能出现兼容性问题:解压或压缩时,文件名呈现为乱码状态。
你需要做适当的修改,以符合你的使用场景。
QZipReader 和 QZipWriter
它俩是 Qt 自带的类,读写Zip,但属 private 内容
Qt5:
QT += gui-private
#include "QtGui/private/qzipreader_p.h"
#include "QtGui/private/qzipwriter_p.h"
Qt6:
QT += core-private
#include "QtCore/private/qzipreader_p.h"
#include "QtCore/private/qzipwriter_p.h"
注:Qt6 使用 gui-private 也行,因为 gui-private 包含 core-private
更多
http://www.qtcn.org/bbs/read-htm-tid-84824.html