Qt内置了zlib库,提供了便捷的压缩与解压函数:qCompress,qUncompress
https://doc.qt.io/qt-5/qtcore-attribution-zlib.html 制作与解压zip文件,因为能调用Qt内置的zlib库,所以非常容易实现。
Demo拖入zip文件,即解压;拖入
文件或文件夹,即压缩成zip文件。
下载
testZip.7z (42 K) 下载次数:89 (Win环境下,Qt5.15、6.6
编译通过)
备注源码里的minizip就是出自zlib库。
将这些文件里的 #include "zlib.h" 替换成 #include <QtZlib/zlib.h> 就实现调用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