Qt調用7z解壓縮文件夾-demo實現

1.背景

最近在做客戶端時遇到能解壓一個壓縮文件到某個文件夾中,在網上搜索了有沒有相關開源代碼,發現可以用借用7z程序的命令行來快速搭建程序,於是採用編寫批處理文件,然後在我們項目中調用該批處理程序進行處理,另外7z也是代碼開源,壓縮效率有優勢的一種壓縮程序。

2.解決方案

  1. 下載7z
    在這裏插入圖片描述
  2. 下載對應的exe文件,安裝後,找到安裝的目錄下,把所以文件拷貝到自己的項目環境中。
    在這裏插入圖片描述
  3. 然後參考上面7-zip.chm文件,找到關於命令行的相關資料:
    在這裏插入圖片描述
  4. 然後我們可以在cmd中嘗試相關命令,於是我們將命令寫到bat批處理文件中
    在這裏插入圖片描述
    在這裏插入圖片描述
  5. 在項目中調用該bat批處理文件:
//調用壓縮批處理
void test7z::on_compress_clicked()
{
	QProcess myProcess(this);
	QString program =  ".\\compress.bat";
	QStringList arguments;
	arguments<<"";
	myProcess.start(program,arguments);
	QElapsedTimer timer;
	timer.start();
	while (myProcess.waitForFinished(100) == false) 
	{
		QByteArray qByteRead = myProcess.readAllStandardOutput();
		if (!qByteRead.isEmpty())
		{
			ui.textBrowser->append(QString::fromLocal8Bit(qByteRead));
			repaint();
		}
		if (timer.hasExpired(10*1000))
		{//執行失敗
			break;
		}
		
	}
	QByteArray qByteRead = myProcess.readAllStandardOutput();
	ui.textBrowser->append(QString::fromLocal8Bit(qByteRead));
	qDebug()<<QString::fromLocal8Bit(qByteRead);

}
//調用解壓縮批處理
void test7z::on_decompress_clicked()
{
	QProcess myProcess(this);
	QString program =  ".\\decompress.bat";
	QStringList arguments;
	arguments<<"";
	myProcess.start(program,arguments);
	QElapsedTimer timer;
	timer.start();
	while (myProcess.waitForFinished(100) == false) 
	{
		QByteArray qByteRead = myProcess.readAllStandardOutput();
		if (!qByteRead.isEmpty()) 
		{
			ui.textBrowser->append(QString::fromLocal8Bit(qByteRead));
			repaint();
		}
		if (timer.hasExpired(10*1000))
		{//執行失敗
			break;
		}
	}
	QByteArray qByteRead = myProcess.readAllStandardOutput();
	ui.textBrowser->append(QString::fromLocal8Bit(qByteRead));
	qDebug()<<QString::fromLocal8Bit(qByteRead);
}
  1. GUI展示
    在這裏插入圖片描述
    7.項目環境-github在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章