2012-08-01 59 views
0

我正在開發一個應用程序來從NFS服務器下載文件到我的電腦。爲了完成我的任務,我編寫了一個Shell腳本來複制給定路徑下的所有目錄,並使用QProcess執行腳本。 QProcess可以正常工作並下載所有目錄。如何在QProcess中執行Shell腳本時更新QprogressBar?

現在,我想在QProgressBar上顯示下載過程報告。 (與我們在從互聯網下載文件時看到的窗口相同)。

我想谷歌搜索,並使用信號找到了一些想法,並試圖如下:

void NfsClient::NfsDownload() 
{ 
    download = new QProcess(this); 
    connect(download, SIGNAL(readyReadStandardOutput()), this, SLOT(displayProgressBar())); 
    download->execute("bash /home/samurai/NfsFileDownload.sh"); 
} 


void NfsClient::displayProgressBar() 
{ 
    ui->progressbar->setvalue(download->readAll().toInt()); 
} 

但這readyReadStandardOutput()信號也決不發出。執行腳本時,我的Qt窗口會凍結。進度條保持不變。 :(

有我解決任何方式來更新QProgressbar相應??? 或任何想法,以顯示下載過程???的GUI視圖

任何建議/想法?

回答

0

它通過刪除Shell腳本概念和實現QDir類。

因爲,要訪問NFS服務器,客戶端必須將服務器目錄掛載到它的一個文件夾上,因此爲了從本地文件夾複製它更好地使用內置的Qt類QDir用於複製,刪除,上傳功能。