一、描述
QFutureWatcher 提供有关 QFuture 的信息和通知。
示例:开始运行并在完成后获取槽回调:
MyClass myObject;
QFutureWatcher<int> watcher;
connect(&watcher, &QFutureWatcher<int>::finished, &myObject, &MyClass::handleFinished);
QFuture<int> future = QtConcurrent::run(...);
watcher.setFuture(future);
QFutureWatcher<void> 专门用于不包含任何结果获取函数。
任何 QFuture<T> 也可以被 QFutureWatcher<void> 监视。如果只需要状态或进度信息,这很有用。
二、成员函数
有部分成员函数和QFuture同名和功能相同,不赘述。
1、[信号] void canceled()
如果监视的 QFuture 被取消,则发出此信号。
2、[信号] void paused()
当监视的 QFuture 暂停时发出此信号。
3、[信号] void progressRangeChanged(int minimum, int maximum)
监视的 QFuture 进度范围已更改为最小值和最大值。
4、[信号] void progressTextChanged(const QString &progressText)
监视的 QFuture 报告文本进度信息时发出这个信号。
5、[信号] void progressValueChanged(int progressValue)
当监视的 QFuture 报告进度时发出此信号,progressValue 给出当前进度。为了避免 GUI 事件循环过载,QFutureWatcher 限制了进度信号发射率。最后一个进度更新(progressValue 等于最大值)将始终交付。
6、[信号] void resultReadyAt(int index)
当监视的 QFuture 报告index处的索引会发出此信号。
7、[信号] void resultsReadyAt(int beginIndex, int endIndex)
当监视的 QFuture 报告准备好的结果。结果从 beginIndex 到 endIndex 进行索引。
8、void setFuture(const QFuture<T> &future)
开始监视QFuture。
9、void setPendingResultsLimit(int limit)
提供节流控制。 当待处理的 resultReadyAt() 或 resultsReadyAt() 信号的数量超过限制时,监视的 QFuture 所代表的计算将被自动节流。