Qt三方库:QuaZIP介绍、编译和使用

news2025/1/12 18:09:20

前言

  Qt使用一些压缩解压功能,探讨过libzip库,zlib库,libzip库比较原始,还有其他库,都比较基础,而在基础库之上,又有高级封装库,Qt中的QuaZIP是一个很好的选择。Quazip是一个用于压缩和解压缩的库,常用于Qt中,通过该库可以较为方便的压缩和解压缩zip等文件.

依赖库:zlib库

   Qt 4无论如何都依赖于zlib,但是您将需要zlib标头来编译QuaZIP。使用Qt5有时,您还需要zlib库(例如,在Windows上)

在QT项目中使用

外部依赖头文件

zlib.h、zconf.h

在QT安装目录下搜索zlib.h,zconf.h,将这两个头文件复制到当前路径下

pro文件

LIBS += -L$(你整理的quazip的lib路径) -lquazip
LIBS += -lz

头文件

#include <zlib.h>
#include "quazip/JlCompress.h"

这个头文件中包含了一些快速进行解压缩的静态函数


/**
压缩单个文件
\param fileCompressed 压缩后生成的文件路径
\param file 压缩前的单个文件的存放路径
\return 成功返回真,失败返回假
*/
static bool compressFile(QString fileCompressed, QString file);

/**
压缩多个文件
\param fileCompressed 压缩后生成的文件路径
\param files 压缩前的多个文件的存放路径构成的QStringList
\return 成功返回真,失败返回假
*/
static bool compressFiles(QString fileCompressed, QStringList files);

/**
压缩整个文件夹,不会压缩被隐藏的文件,详情请见下一个函数
\param fileCompressed 压缩后生成的文件夹路径
\param dir 要压缩的文件夹路径
\param recursive=true 默认为true 为真时.递归创建文件夹和文件,为假时,只在当前路径下压缩文件,不压缩文件夹
\return 成功返回真,失败返回假
*/
static bool compressDir(QString fileCompressed, QString dir = QString(), bool recursive = true);

/*
解压整个文件夹
\param fileCompressed 被压缩的文件的路径
\param dir 查找要被压缩的在压缩包里的文件的关键字
\param recursive 默认为true 为真时.递归创建文件夹和文件,为假时,只在当前路径下压缩文件,不压缩文件夹
\param filters 可以通过dir参数过滤符合的文件夹,例如QDir::AllDirs|QDir::NoDotAndDotDot,如果使用QDir::Files,那么也可以匹配文件.
\return 成功返回真,失败返回假
*/
static bool compressDir(QString fileCompressed, QString dir,bool recursive, QDir::Filters filters);

使用案例

压缩单个文件

    JlCompress comp;
    if(comp.compressFile("./a.zip","a.txt"))
        qDebug()<<"压缩成功";
    else
        qDebug()<<"压缩失败";

压缩多个文件


    JlCompress comp;
    if(comp.compressFiles("./files.zip",QStringList()<<"test.txt"<<"test.zip") )
        qDebug()<<"compress success";
    else
        qDebug()<<"compress Faild";

压缩整个文件夹 

/**
压缩整个文件夹,不会压缩被隐藏的文件,详情请见下一个函数
\param fileCompressed 压缩后生成的文件夹路径
\param dir 要压缩的文件夹路径
\param 为真时,会在同级目录创建同名的文件夹再解压到文件夹中,为假时,直接解压到同级目录.
\return 成功返回真,失败返回假
*/
static bool compressDir(QString fileCompressed, QString dir = QString(), bool recursive = true);

压缩整个文件夹(重载版本)

    JlCompress comp;
    if(comp.compressDir("./test.zip","./test",true,QDir::AllDirs|QDir::NoDotAndDotDot ) )
        qDebug()<<"compress success";
    else
        qDebug()<<"compress Faild";

解压整个文件夹

也适用于文件,可以将文件压缩到对应目录下

   JlCompress comp;
    QStringList files;
    files = comp.extractDir("test.zip","./my_extract"); //将test.zip解压到my_extract文件夹中
    qDebug()<< files;

解压单个文件

注意:最好不要出现中文,可能出现解压失败现象

   JlCompress comp;
    QString files;
    files = comp.extractFile("aaa.zip","bbb.txt","my_extract/t.txt"); //aaa.zip中的aaa.txt解压到my_extract文件夹中
    qDebug()<< files;

解压多个文件


    JlCompress comp;
    QStringList files;

    files = comp.extractFiles("aaa.zip",QStringList()<<"aaa.txt" << "bbb.txt" ,"my_extract"); //aaa.zip中的aaa.txt解压到my_extract文件夹中
    qDebug()<< files;

获取压缩文件中的文件列表

  JlCompress comp;
    QStringList files;

    qDebug()<< comp.getFileList("aaa.zip");

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1661082.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何防止WordPress网站内容被抓取

最近在检查网站服务器的访问日志的时候&#xff0c;发现了大量来自同一个IP地址的的请求&#xff0c;用站长工具分析确认了我的网站内容确实是被他人的网站抓取了&#xff0c;我第一时间联系了对方网站的服务器提供商投诉了该网站&#xff0c;要求对方停止侵权行为&#xff0c;…

5月白银现货最新行情走势

美联储5月的议息会议举行在即&#xff0c;但从联邦公开市场委员会&#xff08;FOMC&#xff09;近期透露的信息来看&#xff0c;降息似乎并没有迫切性。——美联储理事鲍曼认为通胀存在"上行风险"&#xff0c;明尼阿波利斯联邦储备银行行长卡什卡利提出了今年不降息的…

Python修改exe之类的游戏文件中的数值

文章目录 场景查找修改 补充字节to_bytes 场景 某些游戏数值&#xff08;攻击力、射程、速度…&#xff09;被写在exe之类的文件里 要先查找游戏数值&#xff0c;然后修改 查找 首先&#xff0c;要查找数值&#xff0c;大数重复较少&#xff0c;建议从大数找起 F 游戏原件…

AXI4写时序在AXI Block RAM (BRAM) IP核中的应用

在本文中将展示描述了AXI从设备&#xff08;slave&#xff09;AXI BRAM Controller IP核与Xilinx AXI Interconnect之间的写时序关系。 1 Single Write 图1是一个关于32位宽度的BRAM&#xff08;Block RAM&#xff09;的单次写入操作的例子。这个例子展示了如何向地址0x1000h…

45.乐理基础-音符的组合方式-复附点

复附点&#xff1a; 复附点顾名思义就是两个附点 复附点表示的音符&#xff0c;有多少拍&#xff1f;下面拿 复附点四分音符举例&#xff0c;可以把整个音符看成三部分&#xff0c;第一部分是原本的四分音符&#xff0c;第二部分是第一个附点&#xff0c;第三部分是第二个附点&…

C++动态内存管理:与C语言动态内存管理的差异之争

当你改错一行代码的时候&#xff1a; 当你想要重构别人的代码时&#xff1a; 目录 前言 一、C/C的内存分布 二、C/C语言中的动态内存管理 三、new与delete的实现原理 总结&#xff1a; 前言 在C中&#xff0c;内存管理是一个至关重要的主题。正确地管理内存可以避免内存泄…

数字工厂管理系统如何助力企业数据采集与分析

随着科技的不断进步&#xff0c;数字化已成为企业发展的重要趋势。在制造业领域&#xff0c;数字工厂管理系统的应用日益广泛&#xff0c;它不仅提升了生产效率&#xff0c;更在数据采集与分析方面发挥着举足轻重的作用。本文旨在探讨数字工厂管理系统如何助力企业数据采集与分…

H5 处理点击元素高亮、自定义按钮、去除焦点边框

1、设置移动设备上点击元素时出现的高亮颜色 *{-webkit-tap-highlight-color: transparent; }2、如果你想要自定义按钮的样式&#xff0c;你可以使用 -webkit-appearance: none; 来移除按钮的默认样式 .button {-webkit-appearance: none;appearance: none; /* 兼容性更好的通…

【学习AI-相关路程-工具使用-自我学习-Ubuntucudavisco-开发工具尝试-基础样例 (2)】

【学习AI-相关路程-工具使用-自我学习-cuda&visco-开发工具尝试-基础样例 &#xff08;2&#xff09;】 1、前言2、环境说明3、总结说明4、工具安装0、验证cuda1、软件下载2、插件安装 5、软件设置与编程练习1、创建目录2、编译软件进入目录&创建两个文件3、编写配置文…

FinalShell连接虚拟机Linux系统连接超时

报错信息 java.net.ConnectException: Connection timed out: connect 排除是网络问题后可以尝试一下这个方法。 解决方案: 打开虚拟机终端输入:ifconfig 会出现端口信息: 看ens33这里的端口是多少&#xff0c;改一下重新连接就ok。

java spring 10 Bean的销毁过程 上 在docreatebean中登记要销毁的bean

1.Bean销毁是发送在Spring容器关闭过程中的 AnnotationConfigApplicationContext context new AnnotationConfigApplicationContext(AppConfig.class);UserService userService (UserService) context.getBean("userService");userService.test();// 容器关闭cont…

Java找不到包解决方案

在跟着教程写Spingboot后端项目时&#xff0c;为了加快效率&#xff0c;有时候有的实体文件可以直接粘贴到目录中&#xff0c;此时运行项目会出现Java找不到包的情况&#xff0c;即无法找到导入的实体文件&#xff0c;这是项目没有更新的原因。解决方法&#xff1a; 刷新Maven:…

如何在40分钟之内,又快又准完成四六级阅读柯桥考级英语培训

答题步骤和技巧 1 选词填空 选词填空部分字数在200~300之间&#xff0c;设有10个空&#xff0c;提供15个备选项&#xff0c;从中选出最合适答案。选词填空题相对于普通的完型题简单&#xff0c;但是考察内容基本一致。集中考察的点有语法现象&#xff0c;逻辑衔接和搭配。每空…

纯血鸿蒙APP实战开发——数字滚动动效实现

介绍 本示例主要介绍了数字滚动动效的实现方案。 该方案多用于数字刷新&#xff0c;例如页面刷新抢票数量等场景。 效果图预览 使用说明&#xff1a; 下拉页面刷新&#xff0c;数字进行刷新。 实现思路 通过双重ForEach循环分别横向、纵向渲染数字。 Row() {ForEach(this…

Golang面向对象编程(一)

文章目录 结构体基本介绍结构体定义方式创建结构体变量结构体内存对齐结构体类型转换字段的Tag标签 方法基本介绍方法的定义和调用方法调用的传参机制String方法 结构体 基本介绍 基本介绍 Go支持面向对象编程特性&#xff0c;包括封装、继承和多态&#xff0c;但Go中没有类&a…

Day 29 MySQL的主从复制集群

一&#xff1a;主从复制 1.主从复制概念 什么是主从复制&#xff1a; ​ 主从复制&#xff0c;是用来建立一个和主数据库完全一样的数据库环境&#xff0c;称为从数据库&#xff1b;主数据库一般是准实时的业务数据库 主从复制的作用&#xff1a; ​ 做数据的热备&#xf…

STM32_HAL_RTC_解决恢复电源时再一次初始化

1问题 板子再次恢复电源时直接初始化了时间 2解决思路 在初始化函数&#xff08;MX_RTC_Init();&#xff09;中增加判断&#xff0c;判断是否是二次初始化 将值放入备份存储其中 3问题图 4解决后的源码 /* RTC init function */ void MX_RTC_Init(void) {/* USER CODE BE…

如何查看centos7中Java在哪些路径下

在 CentOS 7 上&#xff0c;你可以通过几种方式查找安装的 Java 版本及其路径。以下是一些常用的方法&#xff1a; 1. 使用 alternatives 命令 CentOS 使用 alternatives 系统来管理同一命令的多个版本。你可以使用以下命令来查看系统上所有 Java 安装的配置&#xff1a; su…

minio安装部署

MinIO 介绍 MinIO是一个对象存储解决方案&#xff0c;它提供了与Amazon Web Services S3兼容的API&#xff0c;并支持所有核心S3功能。 MinIO有能力在任何地方部署 - 公有云或私有云&#xff0c;裸金属基础设施&#xff0c;编排环境&#xff0c;以及边缘基础设施。 MinIO 安装…

如何选择适合自己网站的SSL证书提供商?

在互联网技术飞速发展的今天&#xff0c;确保数据安全已成为网站运营的基石。HTTPS证书作为一项重要的安全认证协议&#xff0c;对于保护数据传输的安全性至关重要。本文将为您提供一份详尽的指南&#xff0c;帮助您了解如何申请和部署HTTPS证书。 一、选择SSL证书提供商 首先…