Qt 线程(一) Qt 线程(一) Qt 多线程实现的两种方式 线程实现详解_恋恋西风的博客-CSDN博客_qt 跨线程调用
Qt 线程(二) Qt 线程(二) Qt 线程常用同步方式_恋恋西风的博客-CSDN博客
QFuture 表示异步计算的结果,QFutureWatcher 则允许使用信号和槽监视 QFuture,也就是说,QFutureWatcher 是为 QFuture 而生的。
详细描述
QFutureWatcher 提供了有关 QFuture 的信息和通知,使用 setFuture() 函数开始监视一个特定的 QFuture,函数 future() 则返回由 setFuture() 设置的 future。
QT += concurrent
- #include <QFutureWatcher>
- #include <QtConcurrent/QtConcurrentRun>
-
- QFutureWatcher<void> *pwatcher = new QFutureWatcher<void>;
- connect(pwatcher, &QFutureWatcher<void>::finished, this, [=]()
- {
- // 执行完后触发该槽函数
- });
-
- QFuture<void> future = QtConcurrent::run([=]()
- {
- // 需要执行的代码
- });
-
- pwatcher->setFuture(future);
QFutureWatcher 提供了有关 QFuture 的信息和通知,使用 setFuture() 函数开始监视一个特定的 QFuture,函数 future() 则返回由 setFuture() 设置的 future。
为了方便,QFuture 的很多函数可以直接通过 QFutureWatcher 来访问,例如:
progressValue()、
progressMinimum()、
progressMaximum()、
progressText()、
isStarted()、
isFinished()、
isRunning()、
isCanceled()、
isPaused()、
waitForFinished()、
result() 和 resultAt()。
而 cancel()、setPaused()、pause()、resume() 和 togglePaused() 是 QFutureWatcher 中的槽函数。
状态更改由
started()、
finished()、
cancelled()、
paused()、
resumed()、
resultReadyAt() 和 resultsReadyAt() 信号提供,进度信息由 progressRangeChanged()、progressValueChanged() 和progressTextChanged() 信号提供。
由函数 setPendingResultsLimit() 提供节流控制。当挂起的 resultReadyAt() 或 resultsReadyAt() 信号数量超过限制时,由 future 表示的计算将被自动节流。一旦挂起的信号数量下降到限制以下时,计算将恢复。