码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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

    使用流程:

    1. #include <QFutureWatcher>
    2. #include <QtConcurrent/QtConcurrentRun>
    3. QFutureWatcher<void> *pwatcher = new QFutureWatcher<void>;
    4. connect(pwatcher, &QFutureWatcher<void>::finished, this, [=]()
    5. {
    6. // 执行完后触发该槽函数
    7. });
    8. QFuture<void> future = QtConcurrent::run([=]()
    9. {
    10. // 需要执行的代码
    11. });
    12. 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 表示的计算将被自动节流。一旦挂起的信号数量下降到限制以下时,计算将恢复。
     

  • 相关阅读:
    【数据结构】二叉树的顺序结构-堆
    java计算机毕业设计社区健康信息管理系统源码+系统+mysql数据库+lw文档
    数论——快速幂
    CSS变量(CSS variable)— CSS自定义属性
    互联网摸鱼日报(2022-11-22)
    FTX和Binance摩擦升级?一文梳理“吵架”背后始末
    云主机、云服务器、VPS的区别性能比较
    一些nginx命令
    实现el-table打印功能,样式对齐,去除滚动条
    KT6368A距离_以及蓝牙的性能描述和远距离怎么办
  • 原文地址:https://blog.csdn.net/q610098308/article/details/128152126
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号