我正在开发一个应用程序,将文件从NFS服务器下载到我的pc上。为了完成我的任务,我编写了一个Shell脚本来复制给定路径下的所有目录,并使用QProcess执行该脚本。QProcess运行良好,可以下载所有目录。
现在,我想展示QProgressBar上的下载过程报告。(与我们从互联网上下载文件时在windows上看到的一样)。
我尝试了谷歌搜索,找到了一些使用signal的想法,并尝试如下所示:
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视图?
有什么建议/想法吗?
发布于 2012-08-02 14:46:31
我去掉了Shell脚本的概念,实现了QDir类,解决了这个问题。
因为,要访问NFS服务器,客户端必须将服务器目录装载到其一侧的一个文件夹中。因此,为了从本地文件夹进行复制,最好使用内置的Qt类QDir来实现复制、删除和上传功能。
https://stackoverflow.com/questions/11752839
复制相似问题