当前位置: 首页 > news >正文

Qt扫盲-QFutureWatcher理论总结

QFutureWatcher理论总结

  • 一、概述
  • 二、转态

一、概述

QFutureWatcher类允许我们使用信号槽的方式去监控QFuture。

QFutureWatcher提供关于QFuture的信息和通知。使用 setFuture() 函数开始监视特定的QFuture。

future()函数通过setFuture()返回 QFuture 集合。

为了方便起见,QFuture的几个函数也可以在 QFutureWatcher 中使用:progressValue(), progressMinimum(), progressMaximum(), progressText(), isStarted(), isFinished(), isRunning(), isCanceled(), isPaused(), waitForFinished(), result() 和 resultAt()。cancel()、setPaused()、pause()、resume() 和 togglePaused() 函数是QFutureWatcher中的槽函数。

二、转态

状态变化通过 started()、finished()、canceled()、paused()、resumed()、resultReadyAt() 和 resultsReadyAt() 信号来报告。进度信息由 progressRangeChanged()、void progressValueChanged() 和 progressTextChanged() 信号提供。

节流控制由 setPendingResultsLimit() 函数提供。当挂起的 resultReadyAt() 或 resultsReadyAt() 信号的数量超过限制时,future表示的计算将自动进行节流。一旦挂起的信号数量下降到限制以下,计算将恢复。

示例:开始计算并在计算结束时获得一个槽回调:

  // Instantiate the objects and connect to the finished signal.MyClass myObject;QFutureWatcher<int> watcher;connect(&watcher, SIGNAL(finished()), &myObject, SLOT(handleFinished()));// Start the computation.QFuture<int> future = QtConcurrent::run(...);watcher.setFuture(future);

请注意,并非所有正在运行的异步计算都可以取消或暂停。例如,QtConcurrent::run() 返回的 future 不能被取消;但是QtConcurrent::mappedReduced() 返回的 future 可以。

QFutureWatcher<void> 被指定为不包含任何结果获取函数。任何 QFuture 也可以被 QFutureWatcher 观测到。如果只需要状态或进度信息,这是有用的;而不是实际的结果数据。 QFutureWatcher 就是监测的,并不是去表示结果的。

http://www.lryc.cn/news/214931.html

相关文章:

  • 对比学习(contrastive Learning)
  • 译文:我们如何使 Elasticsearch 7.11 中的 date_histogram 聚合比以往更快
  • python设计模式4:适配器模式
  • kubectl资源管理命令---声明式
  • IDEA使用-通过Database面板访问数据库
  • 单片机如何写好一个模块的驱动文件
  • 【C++笔记】C++多态
  • 不想改代码!这样实现Reverse Sync测量时间同步精度
  • 【webrtc】 对视频质量的码率控制的测试与探索
  • 2003 - Can‘t connect to MysQL server on ‘39.108.169.0‘ (10060 “Unknown error“)
  • Python算法——选择排序
  • 从「码农」到管理者,E人程序员的十年蜕变
  • ant Java任务的jvmargs属性和<jvmarg>内嵌元素
  • XML External Entity-XXE-XML实体注入
  • 生态扩展Spark Doris Connector
  • 构建 hive 时间维表
  • Pycharm安装jupyter和d2l
  • 虹科案例 | AR内窥镜手术应用为手术节约45分钟?
  • 纳米银线 纳米银纳米线 平均直径: 50-100nm
  • 力扣labuladong——一刷day15
  • 【开题报告】基于微信小程序的母婴商品仓储管理系统的设计与实现
  • Faraday库
  • 【原创】java+swing+mysql校园论坛管理系统设计与实现
  • endnote调整参考文献
  • chap认证带客户端IP分配案例
  • 算法笔记【8】-合并排序算法
  • 蓝桥杯每日一题2023.10.30
  • macOS M1安装wxPython报错‘tiff.h‘ file not found的解决方法
  • 多路转接之epoll
  • 删除排序链表中的重复节点II(C++解法)