工具介面如下,此工具只實現對單一資料夾的操作,僅作為實現簡單功能。
Concurrent是並行的意思,QtConcurrent名稱空間提供高層次的API,不需要使用低階執行緒原語的多執行緒程式,如互斥,讀寫鎖,等待條件或訊號。用QtConcurrent編寫的程式會根據可用處理器核心的數量自動調整使用的執行緒數。
QtConCurrent::run()是QtConcurrent名稱空間裡的函數。主要功能是啟動一個執行緒來執行一個函數。並且該執行緒取自全域性QThreadPool,該函數的返回值通過QFuture API提供。
在使用前需要在工程檔案中匯入模組,否則定義相關標頭檔案時會出現錯誤。
在(工程名).pro增加一行如下:
QT += concurrent
以複製資料夾為例,該函數內為呼叫copy.bat指令碼
關鍵程式碼如下:
bool mybat::coypProcess()
{
//呼叫bat指令碼
return true;
}
關鍵程式碼如下:
QFuture<bool> future = QtConcurrent::run(this,&mybat::coypProcess);
while(!future.isFinished())
{
QApplication::processEvents(QEventLoop::AllEvents, 100);
}
傳入兩個引數。
關鍵程式碼如下:
QProcess press(NULL);
press.setWorkingDirectory(DirPath);
QString command =DirPath+"\\"+"copy.bat"+ blank + m_filePath + blank + m_objFilePath +"\\";
press.start(command);
press.waitForFinished(-1);
檔案裡包含3個使用的bat指令碼。
mybat程式碼下載