0

我正在开发一个应用程序来将文件从 NFS 服务器下载到我的电脑。为了完成我的任务,我编写了一个 Shell 脚本来复制给定路径的所有目录并使用 QProcess 执行脚本。QProcess 工作正常并下载所有目录。

现在,我想在 QProgressBar 上显示下载过程报告。(与我们在从 Internet 下载文件时在 Windows 上看到的相同)。

我尝试了谷歌搜索并使用信号找到了一些想法并尝试如下:

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 视图???

任何建议/想法???

4

1 回答 1

0

我通过删除 Shell 脚本概念并实现 QDir 类来解决它。

因为,要访问 NFS 服务器,客户端必须将服务器目录挂载到其一侧的文件夹之一。因此,为了从本地文件夹复制,最好使用内置的 Qt 类 QDir 进行复制、删除、上传功能。

于 2012-08-02T06:46:30.777 回答