Qt 线程(四) Qt 异步 QFutureWatcher 监视异步 返回结果

Qt  线程(一) Qt 线程(一) Qt 多线程实现的两种方式 线程实现详解_恋恋西风的博客-CSDN博客_qt 跨线程调用

 Qt 线程(二) Qt 线程(二) Qt 线程常用同步方式_恋恋西风的博客-CSDN博客

Qt 线程(三)

简述

QFuture 表示异步计算的结果,QFutureWatcher 则允许使用信号和槽监视 QFuture,也就是说,QFutureWatcher 是为 QFuture 而生的。
详细描述

    QFutureWatcher 提供了有关 QFuture 的信息和通知,使用 setFuture() 函数开始监视一个特定的 QFuture,函数 future() 则返回由 setFuture() 设置的 future。
 

Qt Pro 文件添加

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

恋恋西风

up up up

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值