当前位置: 首页 > news >正文

QFuture的使用方式

        QFuture是Qt框架中用于处理异步任务和获取异步操作结果的一个类。

        它通常与QtConcurrent::run一起使用,可以方便地启动一个异步任务,并在任务完成时获取结果。

        QFutureWatcher监控结果是否可以获取,future.result()来获取结果。

        示例:计算斐波那契数列

        假设我们有一个计算斐波那契数列的函数,这个函数可能需要一些时间来完成,因此我们希望在后台线程中运行它,而主线程可以继续执行其他任务。

        当计算完成时,我们希望获取结果并更新UI。

1. 定义计算斐波那契数列的函数
#include <QtConcurrent>
#include <QFuture>
#include <QFutureWatcher>
#include <QDebug>
#include <QApplication>// 计算斐波那契数列的函数
int fibonacci(int n)
{if (n <= 1)return n;return fibonacci(n - 1) + fibonacci(n - 2);
}
2. 使用QtConcurrent::run启动异步任务

        使用QtConcurrent::run启动一个异步任务,并获取一个QFuture对象。

        QFuture对象可以用来监控任务的执行状态和获取任务的结果。 

int main(int argc, char *argv[])
{QApplication app(argc, argv);// 启动异步任务QFuture<int> future = QtConcurrent::run(fibonacci, 30); // 计算第30个斐波那契数// 创建一个QFutureWatcher对象来监控任务QFutureWatcher<int> watcher;QObject::connect(&watcher, &QFutureWatcher<int>::finished, [&]() {  //捕获列表:[&],表示捕获当前作用域中的所有变量的引用。// 任务完成时的槽函数int result = future.result(); // 获取任务的结果qDebug() << "Fibonacci result:" << result;});// 将QFuture与QFutureWatcher关联watcher.setFuture(future);// 主线程继续执行其他任务qDebug() << "Main thread is running other tasks...";// 防止程序立即退出return app.exec();
}

 

http://www.xdnf.cn/news/971929.html

相关文章:

  • vue的created和mounted区别
  • 替代爬虫!亚马逊API采集商品详情实时数据开发教程
  • 《Java开发者进击之路:掌握Spring AI与DL4J,实现AI模型API集成》
  • MCU Keil中支持的变量类型和定义方法
  • 美业门店/个案疗愈门店管理系统具备「活动促销」功能有哪些优势?
  • 多面体编译的循环分块
  • iOS和桌面双端抓包实战经验总结:Sniffmaster与常见工具组合解析
  • 算法工程师工作面试常考问题汇总
  • HarmonyOS 应用开发学习记录 - 从Windows开发者视角看鸿蒙开发
  • RabbitMQ的使用--Spring AMQP(更新中)
  • 期末考试复习总结-《从简单的页面开始(上)》
  • CentOS7下的Nginx部署
  • 行业 |5G六年,互联网改变了什么?
  • WHAT - 组件库开发场景 - 完全无样式的 UI 组件库 Headless UI
  • 看板更新不及时该如何规范
  • jQuery带动画特效的圆形导航菜单特效
  • Playwright 与 Selenium:自动化测试的两大主流工具对比
  • iOS超级签申请流程及环境部署
  • 从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
  • 二叉树进阶:经典算法题详解
  • AD8539ARZ ADI 精密放大器 电子元器件解析
  • 判断素数两种方法【自用】
  • 【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
  • 工作中开发的sql总结
  • LeetCode 200.岛屿数量
  • 天猫官方认证TP服务商——品融电商代运营全链路解析
  • 无需安装!在线 SQL 数据库工具实战 :经典 SQL 语句案例
  • NY167NY171美光固态闪存NY176NY180
  • 《炒股进阶:MACD交易技术从入门到精通》速读笔记
  • Nature子刊|ChatNT:生物多模态LLM破壁者!统一DNA/RNA/蛋白质分析的对话式AI