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 就是监测的,并不是去表示结果的。

相关推荐
foundbug9999 天前
基于qt5和stk10开发的互联调试
qt5
奇树谦18 天前
VTK|显示三维图像的二维切片
c++·vtk·qt5·三维显示
钟剑锋-JeffChong1 个月前
一文详解 Linux下的开源打印系统CUPS(Common UNIX Printing System)
linux·嵌入式·qt5·打印机·cups
Zfox_1 个月前
【Qt】网络
开发语言·网络·c++·qt·qt5·客户端开发
钟剑锋-JeffChong1 个月前
Qt快速上手:QSettings高效配置读写实战指南
跨平台·qt5·配置管理·qsettings
Zfox_1 个月前
【Qt】文件
c++·qt·qt5·客户端开发
Zfox_2 个月前
【Qt】QDialog类
c++·qt·qt5·客户端开发
1024熙2 个月前
【Qt】——理解信号与槽,学会使用connect
前端·数据库·c++·qt5
Zfox_2 个月前
【Qt】QMainWindow类
开发语言·c++·qt·qt5·客户端开发
小刘同学++2 个月前
Qt 自定义控件
qt5