我正在开发一个将文件从NFS服务器下载到我的电脑的应用程序。为了完成我的任务,我编写了一个Shell脚本来复制给定路径上的所有目录并使用QProcess执行脚本。 QProcess工作正常并下载所有目录。
现在,我想在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 :(得分:0)
我通过删除Shell脚本概念并实现QDir类来解决它。
因为要访问NFS服务器,客户端必须将服务器目录挂载到其一侧的文件夹中。因此,为了从本地文件夹复制,最好使用内置的Qt类QDir进行复制,删除,上传功能。