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表示的计算将自动进行节流。一旦挂起的信号数量下降到限制以下,计算将恢复。

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

cpp 复制代码
  // 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 就是监测的,并不是去表示结果的。

相关推荐
小小码农Come on6 天前
QPushButton QSS(一):按钮常用qss
前端·javascript·css·qt5
习惯就好zz8 天前
[实战笔记] 从 Qt 5.12.9 跨越到 Qt 6.x 完美迁移指南 (Windows + VS)
windows·qt·msvc·qt5·qt6·迁移
艾莉丝努力练剑10 天前
【QT】Qt 从零上手:Hello World、项目文件与实战避坑指南
linux·运维·开发语言·c++·qt·继承·qt5
艾莉丝努力练剑16 天前
【QT】环境搭建收尾:认识Qt Creator
运维·开发语言·c++·人工智能·qt·qt creator·qt5
飞仔FeiZai23 天前
基于 Python 与 PyQt5 构建的特斯拉行车记录仪视频播放器
python·音视频·qt5
微尘hjx1 个月前
【目标检测软件 02】AirsPy 目标检测系统操作指南
人工智能·测试工具·yolo·目标检测·计算机视觉·目标跟踪·qt5
龚建波1 个月前
Qt程序设计:QPromise/QFuture多线程任务管理
qt·qfuturewatcher·qpromise·qfuture
dllmayday2 个月前
QWidget上叠加半透明QML组件显示方案
开发语言·qt5
蓝天智能2 个月前
QT实战:Unix 系统内存异常排查
unix·qt5
GIS阵地2 个月前
Qt实现简易仪表盘
开发语言·c++·qt·pyqt·qgis·qt5·地理信息系统