使用:源码项目中qztest项目,记住更换Qt版本后,需要重新生成quazip的两个库文件,否则会出错。对于在直接运行.exe可执行文件会出现QtCore,dll缺失的情况,这里就要win7系统对其设置PATH路径,一个是D:\Qt\Qt5.4.0\5.4\msvc2010_opengl\bin,一个是D:\Qt\Qt5.4.0\Tools\QtCreator\bin
怎么使用qztest项目调用前面编译的两个库实现编解码操作,如下所示,对于怎么将需要的第三方文件添加到项目中,参考文献中有说明,自己也是根据他的思路来的。文件添加完成后,继续下面操作:
win32:CONFIG(release, debug|release): {
LIBS += -L$$PWD/3rdparty/quazip/lib/ -lquazip
LIBS += -L$$PWD/3rdparty/quazip/bin/ -lquazip
}
else:win32:CONFIG(debug, debug|release): {
LIBS += -L$$PWD/3rdparty/quazip/lib/ -lquazip
LIBS += -L$$PWD/3rdparty/quazip/bin/ -lquazip
}
#else:unix: LIBS += -L$$OUT_PWD/../quazip/ -lquazip
INCLUDEPATH += $$PWD/3rdparty/quazip/include
DEPENDPATH += $$PWD/3rdparty/quazip/include
INCLUDEPATH += "D:\Qt\Qt5.4.0\5.4\msvc2010_opengl\include\QtZlib"
#INCLUDEPATH += $$PWD/..
#DEPENDPATH += $$PWD/../quazip
2、第三方文件则根据上述文献方法放在项目目录下。
顺便给出一个解压程序,专门针对zip的压缩包:
bool Extract(const QString& in_file_path, const QString& out_file_path)
{
QuaZip archive(in_file_path);
if (!archive.open(QuaZip::mdUnzip))
return false;
QString path = out_file_path;
if (!path.endsWith("/") && !out_file_path.endsWith("\\"))
path += "/";
QDir dir(out_file_path);
if (!dir.exists())
dir.mkpath(out_file_path);
for( bool f = archive.goToFirstFile(); f; f = archive.goToNextFile() )
{
QString filePath = archive.getCurrentFileName();
QuaZipFile zFile(archive.getZipName(), filePath);
zFile.open(QIODevice::ReadOnly );
QByteArray ba = zFile.readAll();
zFile.close();
if (filePath.endsWith("/"))
{
dir.mkpath(filePath);
}
else
{
QFile dstFile(path + filePath);
if (!dstFile.open(QIODevice::WriteOnly))
return false;
dstFile.write(ba);
dstFile.close();
}
}
return true;
}
使用在main函数中:
添加语句:Extract("f:/workspace/11.zip", "f:/" );解压
添加语句:bool b_isTrue = JlCompress::compressDir(QString("f:/tong.zip"), QString("f:/workspace"), true);//压缩,记住必须在release版本中,不能再debug版本运行。