最近寫公司的貨架產品,在總結之前專案裡用到的**。立個flag,這幾天會把之前做的解壓縮部分的**整合到部落格中。
zip檔案解壓部分,是我踩坑最嚴重的部分。當時編譯zlib庫,quazip庫花了很長時間。所以這部分我整理的還比較詳細,希望以後不會再在這部分浪費時間。
【尤其感謝參考文獻裡的那位大佬的分享!~】
專案需求
開發環境zlib配置
開啟命令列,定位到自定義目錄:
d:\3rdparty\zlib\zlib-1.2.11-quazip後,執行以下命令;
mingw32-make -f win32/makefile.gcc
quazip配置
開啟命令列,定位到自定義目錄:
d:\3rdparty\quazip\quazip-0.7.3;
分條執行以下命令;
qmake "config+=release" "includepath+=d:/3rdparty/zlib/zlib-1.2.11-quazip" "libs+=-ld:/3rdparty/zlib/zlib-1.2.11-quazip -lz"
mingw32-make
qmake "config+=debug" "includepath+=d:/3rdparty/zlib/zlib-1.2.11-quazip" "libs+=-ld:/3rdparty/zlib/zlib-1.2.11-quazip -lz"
mingw32-make
以上步驟沒報錯就可以繼續下一步。
壓縮部分
/**
* @brief 壓縮單個檔案
* @param filecompressed: 壓縮包的名稱 file: 要壓縮的檔案
* @return 壓縮成功返回true否則為false
*/static
bool
compressfile
(qstring filecompressed, qstring file)
;/**
* @brief 壓縮多個檔案(檔案列表)
* @param filecompressed: 壓縮包的名稱 files: 要壓縮的檔案列表
* @return 壓縮成功返回true否則為false
*/static
bool
compressfiles
(qstring filecompressed, qstringlist files)
;/**
* @brief 壓縮乙個資料夾(不會壓縮資料夾內的隱藏檔案)
* @param filecompressed: 壓縮包的名稱 dir: 要壓縮的資料夾目錄 recursive:是否要打包子檔案目錄
* @return 壓縮成功返回true否則為false
*/static
bool
compressdir
(qstring filecompressed, qstring dir =
qstring()
,bool recursive =
true);
/** * @brief 壓縮乙個資料夾(通過設定filters引數可以壓縮資料夾內隱藏檔案)
* @param filecompressed: 壓縮包的名稱 dir: 要壓縮的資料夾目錄 recursive:是否要打包子檔案目錄 filters:過濾條件
* @return 壓縮成功返回true否則為false
*/static
bool
compressdir
(qstring filecompressed, qstring dir,
bool recursive, qdir::filters filters)
;
解壓部分/**
@ brief 解壓單個檔案
@ return 解壓的檔案的完整路徑列表,失敗時為空。
*/static qstring extractfile
(qstring filecompressed, qstring filename, qstring filedest =
qstring()
);/**
@ brief 解壓多個檔案(檔案列表)
@ return 解壓的檔案的完整路徑列表,失敗時為空。
*/static qstringlist extractfiles
(qstring filecompressed, qstringlist files, qstring dir =
qstring()
);/** @ brief 解壓整個壓縮包
@ return 解壓的檔案的完整路徑列表,失敗時為空。
*/static qstringlist extractdir
(qstring filecompressed, qstring dir =
qstring()
);/** @ brief 獲取壓縮包內檔案列表
@ return 檔案中的檔案列表,更準確地說,是列出條目,包括檔案和目錄單獨存在
*/static qstringlist getfilelist
(qstring filecompressed)
;//4個過載函式
//param iodevice pointer to device with compressed data.
static qstring extractfile
(qiodevice *iodevice, qstring filename, qstring filedest =
qstring()
);static qstringlist extractfiles
(qiodevice *iodevice, qstringlist files, qstring dir =
qstring()
);static qstringlist extractdir
(qiodevice *iodevice, qstring dir =
qstring()
);static qstringlist getfilelist
(qiodevice *iodevice)
;
將zlib、quazip庫鏈結進專案pro檔案
#路徑需要換成自己配置的路徑
includepath += d:/3rdparty/zlib/zlib-1.2.11-quazip
libs += -ld:/3rdparty/zlib/zlib-1.2.11-quazip -lz
includepath += d:/3rdparty/quazip/quazip-0.7.3/quazip
libs += -ld:/3rdparty/quazip/quazip-0.7.3/quazip/release -lquazip
main.cpp
#include
#include
#include
intmain
(int argc,
char
* argv)
return a.
exec()
;}
如果qmake
,mingw32-make
命令不能使用,那就需要配置環境變數。
zipping and unzipping files with qt
Qt中利用QFileDialog操作檔案(1)
在建立應用程式的時候,我們通常會開到選單欄的file選單下面會有開啟檔案的按鈕,在這裡我們通過qt去實現一次 如果要開啟乙個檔案,首先我們需要獲取檔案路徑,qt提供了內建的qfiledialog對話方塊用來獲取需要開啟的檔名稱,qfiledialog有乙個內建靜態函式用於獲取檔案 qstring f...
Qt中的利用QProcess呼叫外部程式
今天工作中要qt呼叫記事本來開啟乙個檔案。上網查了一下用qprocess用法,一般的qprocess開啟外部程式.exe檔案,下面總結一下,挺簡單的。int qprocess execute const qstring program,const qstringlist arguments prog...
Qt中利用定時器QTimer實時顯示當前日期和時間
時顯示當前日期和時間。下面說明方法 1.在工程中宣告乙個全域性 qtimer物件 qtimer timer 2.在建構函式中定義 qtimer 並建立訊號槽關係,同時設定時間啟動 你也可以再其他地方啟動 timer new qtimer this connect timer,signal timeo...