首页| 论坛| 消息
主题:Qt:压缩、解压 与 Zip
20091001753发表于 2023-10-28 14:04
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

浏览大图

浏览大图
附件: testZip.7z (42 K) 下载次数:91
回帖(4):
4楼:测试文件的7z文件解压会出错
3楼:
2楼:学习了

全部回帖(4)»
最新回帖
收藏本帖
发新帖