首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用QFuture更新QProgressDialog

使用QFuture更新QProgressDialog
EN

Stack Overflow用户
提问于 2009-12-10 23:13:09
回答 1查看 3.1K关注 0票数 7

在等待QFuture时,主GUI线程更新QProgressDialog的正确方式是什么?具体地说,就是这个循环中的内容:

代码语言:javascript
复制
QProgressDialog pd(...);
QFuture f = ...;

while (!f.isFinished()) {
  pd.setValue(f.progressValue());

  // what goes here?
}

现在,我在那里调用了一个类似sleep()的函数,但这并不是最优的(当然也会引入一些GUI延迟)。

如果我什么都不放,主线程会循环-极点pd.setValue(),浪费CPU周期。

我希望放入类似QCoreApplication::processEvents(flag,maxtime)的东西,但如果事件队列为空,它会立即返回。我想要一个版本,即使队列是空的,也可以等到maxtime或其他任何地方。这样,我得到了延迟,并且主线程总是准备好响应GUI事件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-12-10 23:15:05

使用QFutureWatcher通过信号和插槽监视QFuture对象。

代码语言:javascript
复制
QFutureWatcher watcher;
QProgressDialog pd(...);
connect(&watcher, SIGNAL(progressValueChanged(int)), &pd, SLOT(setValue(int)));
QFuture f = ...
watcher.setFuture(f);
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1881627

复制
相关文章

相似问题

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