• 1663阅读
  • 4回复

Qt:压缩、解压 与 Zip [复制链接]

上一主题 下一主题
离线20091001753
 

只看楼主 倒序阅读 楼主  发表于: 2023-10-28
Qt内置了zlib库,提供了便捷的压缩与解压函数:qCompress,qUncompress
https://doc.qt.io/qt-5/qtcore-attribution-zlib.html

制作与解压zip文件,因为能调用Qt内置的zlib库,所以非常容易实现。

Demo
拖入zip文件,即解压;拖入文件或文件夹,即压缩成zip文件。



下载
testZip.7z (42 K) 下载次数:82 (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 自带的类,但属 private 内容

  1. Qt5:
  2. QT += gui-private
  3. #include "QtGui/private/qzipreader_p.h"
  4. #include "QtGui/private/qzipwriter_p.h"
  5. Qt6:
  6. QT += core-private
  7. #include "QtCore/private/qzipreader_p.h"
  8. #include "QtCore/private/qzipwriter_p.h"
  9. 注:Qt6 使用 gui-private 也行,因为 gui-private 包含 core-private


更多
http://www.qtcn.org/bbs/read-htm-tid-84824.html
(づ ̄ 3 ̄)づ
离线lzh280

只看该作者 1楼 发表于: 2023-10-30
  
离线shokokawaii

只看该作者 2楼 发表于: 2023-11-05
学习了
QFluentWidgets 是基于 Qt 的 Fluent Designer 组件库,内置超过 160 个开箱即用的 Fluent Designer 组件,支持亮暗主题无缝切换和自定义主题色。搭配所见即所得的 Fluent Designer 软件,只需拖拖拽拽,不用编写一行 QSS,就能快速搭建现代化界面。有意者可联系邮箱或者 QQ~
官网:https://qfluentwidgets.com/zh/ (需要科学上网)
邮箱:shokokawaii@foxmail.com
QQ:1953658489
在线boylebao

只看该作者 3楼 发表于: 2023-11-07
    
为Qt打造具有强大生产力的软件。
在线angelus

只看该作者 4楼 发表于: 01-04
测试文件的7z文件解压会出错
快速回复
限100 字节
 
上一个 下一个