2012-08-01 3 views
0

NFS 서버에서 PC로 파일을 다운로드하는 응용 프로그램을 개발 중입니다. 내 작업을 완수하기 위해 주어진 경로의 모든 디렉토리를 복사하고 QProcess를 사용하여 스크립트를 실행하는 쉘 스크립트를 작성했습니다. QProcess는 정상적으로 작동하고 모든 디렉토리를 다운로드합니다.QProcess에서 셸 스크립트를 실행하는 동안 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 창이 고정됩니다. 그리고 Progressbar는 변경되지 않습니다. :(

내가 해결 QProgressbar를 업데이트 할 수있는 방법 따라 ??? 또는 다운로드 과정 ???의 GUI보기를 표시하는 어떤 생각

어떤 제안/아이디어 ???

답변

0

이 있습니까 그것은 쉘 스크립트 개념을 제거하고 QDir 클래스를 구현함으로써 이루어집니다.

NFS 서버에 액세스하려면 클라이언트가 서버 디렉토리를 그 폴더 중 하나에 마운트해야합니다. 따라서 로컬 폴더에서 복사하는 것이 더 좋습니다 복사, 삭제, 업로드 기능을위한 내장 된 Qt 클래스 QDir

관련 문제