首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在QProcess中执行外壳脚本时更新QprogressBar?

如何在QProcess中执行外壳脚本时更新QprogressBar?
EN

Stack Overflow用户
提问于 2012-08-01 13:08:54
回答 1查看 541关注 0票数 0

我正在开发一个应用程序,将文件从NFS服务器下载到我的pc上。为了完成我的任务,我编写了一个Shell脚本来复制给定路径下的所有目录,并使用QProcess执行该脚本。QProcess运行良好,可以下载所有目录。

现在,我想展示QProgressBar上的下载过程报告。(与我们从互联网上下载文件时在windows上看到的一样)。

我尝试了谷歌搜索,找到了一些使用signal的想法,并尝试如下所示:

代码语言:javascript
复制
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视图?

有什么建议/想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-02 14:46:31

我去掉了Shell脚本的概念,实现了QDir类,解决了这个问题。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11752839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档