C++11 Qt QFutureWatcher lambda

news2024/11/28 14:36:17

目录

Lambda 介绍

【QT】Qt之QFutureWatcher

简述

传参:

还可以使用 QProgressDialog  作为阻堵 函数,变成同步;

完成后,关闭;

MyQProgressDialog 

效果:


Lambda 介绍

 Lambda 函数也叫匿名函数, 是C++ 11中新增的特性;谁用谁知道,哈;
1. Lambda函数的好处

Lambda函数使代码变得更加紧凑、更加结构化和更富有表现力;

lambda在c++作用主要是作为内嵌函数,逻辑更加清楚,代码可读性更好;

【QT】Qt之QFutureWatcher

简述

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

// 实例化对象,并连接到 finished() 信号。
MyClass myObject;
QFutureWatcher<int> watcher;
connect(&watcher, SIGNAL(finished()), &myObject, SLOT(handleFinished()));
 
// 开始计算
QFuture<int> future = QtConcurrent::run(...);
watcher.setFuture(future);

 使用 lambda

     if(nullptr == WidgetWatcher)
    {
        WidgetWatcher = new QFutureWatcher<void>;
        connect(WidgetWatcher, &QFutureWatcher<void>::finished, this, [=]() {

            qDebug()<<"finish threadid "<<QThread::currentThreadId();
             mQProgressDialog->close();
        });
    }

    QFuture<void> future = QtConcurrent::run([=]() {
        //slotShowInsertionWidget();
        qDebug()<<"111 threadid "<<QThread::currentThreadId();
        QThread::sleep(3);
        getTextStaticFun();
    });
    WidgetWatcher->setFuture(future);

传参:

// 传入 当前 this
QFuture<void> future = QtConcurrent::run([&]() 

还可以使用 QProgressDialog  作为阻堵 函数,变成同步;

  progress->exec();

完成后,关闭;

        connect(WidgetWatcher, &QFutureWatcher<void>::finished, this, [=]() {

            qDebug()<<"finish threadid "<<QThread::currentThreadId();
             mQProgressDialog->close();
        });

MyQProgressDialog 

#ifndef MYPROGRESSDIALOG_H
#define MYPROGRESSDIALOG_H
 
#include<QProgressDialog>
class  MyProgressDialog :public QProgressDialog
{
  Q_OBJECT
public:
    MyProgressDialog(const QString &labelText);
};


#include "myprogressdialog.h"
#include<QProgressBar>
MyProgressDialog::MyProgressDialog(const QString &labelText)
{

     setAutoClose(false);		//进度达到最大值时不关闭,默认为true
    // setLabelText("正在导出数据,请稍后...");	//显示的文本
     setLabelText(labelText);
     setCancelButton(NULL);			//不显示取消按钮
     setWindowModality(Qt::WindowModal);
    //mQProgressDialog->setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint);
     setWindowFlags(Qt::FramelessWindowHint | Qt::Dialog | Qt::WindowStaysOnTopHint);
     setMinimumWidth(600);
    // setWindowModality(Qt::ApplicationModal);
    //setModal(true);
    QProgressBar * prog = new QProgressBar(this);
    prog->setTextVisible(false);
    //prog->setStyleSheet("QProgressBar{  max-height: 20px;\nbackground: #323232;\nborder-radius: 10px;\ntext-align:center;\n}\nQProgressBar::chunk {  background: #2C6ED5;\nborder-radius: 10px;\n}");
    prog->setRange(0, 0);
     setBar(prog);
    //mQProgressDialog->hide();
     reset();
}

效果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1069892.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Hadoop使用hdfs指令查看hdfs目录的根目录显示被拒

背景 分布式部署hadoop,服务机只有namenode节点,主机包含其他所有节点 主机关机后,没有停止所有节点,导致服务机namenode继续保存 再次开启主机hadoop,使用hdfs查看hdfs根目录的时候显示访问被拒 解决方案 1.主机再次开启hadoop并继续执行关闭 2.服务器再次开启hadoop并继…

强化学习入门

简介 什么是强化学习 强化学习是一种机器学习方法&#xff0c;它可以帮助计算机学会在不断尝试和经验积累中做出最佳决策。用通俗的方式来说&#xff0c;强化学习就像是训练一只宠物狗学会做任务一样。 想象一只狗要学会取球。一开始&#xff0c;它可能不知道该怎么做&#…

回顾Softing 2023工博之旅精彩瞬间

2023年9月23日&#xff0c;为期5天的第23届中国国际工业博览会&#xff08;CIIF&#xff09;于上海国家会展中心圆满落幕。Softing作为PROFIBUS创始人之一&#xff0c;德国工业4.0的领军企业之一&#xff0c;在本次展会上向大家呈现了众多工业自动化及IT网络方面的领先产品及方…

深度学习笔记之优化算法(四)Nesterov动量方法的简单认识

机器学习笔记之优化算法——Nesterov动量方法的简单认识 引言回顾&#xff1a;梯度下降法与动量法Nesterov动量法Nesterov动量法的算法过程描述总结 引言 上一节对动量法进行了简单认识&#xff0c;本节将介绍 Nesterov \text{Nesterov} Nesterov动量方法。 回顾&#xff1a;…

在SOLIDWORKS搭建一个简易的履带式机器人

文章目录 前言一、构建模型基本单元二、搭建车体模块三.插入轮子4.构建履带 前言 趁着十一假期&#xff0c;在solidworks中搭建了一个履带式机器人小车&#xff0c;计划将其应用在gazebo中完成多机器人编队的仿真。 一、构建模型基本单元 构建底板&#xff08;a面&#xff09…

第六讲:构建类的事件(下)

《VBA中类的解读及应用》教程【10165646】是我推出的第五套教程&#xff0c;目前已经是第一版修订了。这套教程定位于最高级&#xff0c;是学完初级&#xff0c;中级后的教程。 类&#xff0c;是非常抽象的&#xff0c;更具研究的价值。随着我们学习、应用VBA的深入&#xff0…

.some方法、vh、多列布局、DNS域名解析过程、空页面文字内容渲染

nodeEndTime.some((time) > !!time&#xff09; 这个方法主要用来判断nodeEndTime这个数组中是否有至少一个非假值的元素。它会遍历 nodeEndTime 数组中的每个元素&#xff0c;如果至少有一个元素是真值&#xff08;不是 null、undefined、0、false 或空字符串等假值&#x…

Flutter学习笔记

此篇文章用来记录学习Flutter 和 Dart 相关知识 零.Dart基本数据类型 Dart 是一种静态类型的编程语言&#xff0c;它提供了一系列基本数据类型&#xff0c;用于存储和操作不同种类的数据。以下是 Dart 中的一些基本数据类型以及它们的详细介绍&#xff1a; 1. 整数类型&#…

python学习——各种模块argparse、os、sys、time、re、sched、函数体

python学习——各种模块argparse、os、sys、time、re、sched、函数体 各种模块学习1. python脚本2. argparse模块&#xff1a;撰写帮助文档&#xff0c;命令行参数定义等3. os模块&#xff1a;用于文件/目录路径或名字的获取4. sys模块&#xff1a;用于对命令行参数进行获取处理…

车企“新四化”之——安全高效的电动汽车和混动汽车高压测量方案

一 背景 汽车行业正经历着“新四化”从概念向实际转化的过程&#xff08;新四化即电动化、智能化、网络化、共享化&#xff09;&#xff0c;各大车企也将调整发展布局&#xff0c;而混合动力及电动汽车自然就成为了主要关注点。 对于混合动力汽车&#xff08;PHEV&#xff09…

ReentrantLock锁与AQS的联系

请先看——————>AQS的简单说明 ReentrantLock底层是基于AQS实现的&#xff0c;在并发编程中可以实现公平锁和非公平锁来对同步资源进行控制&#xff0c;默认是非公平锁&#xff0c;并且是可重入锁。 1.ReentrantLock的体系关联结构 2.构造方法 可以发现ReentrantLock…

Spring Security——基于前后端分离项目的使用(安全框架)

1.简介 Spring Security有一个过滤器链&#xff0c;也就是说原本在拦截器和过滤器里面做的事都可以用Spring Security完成&#xff0c;比如验证token和将用户id存入线程上下文局部变量等等。 入门案例 创建项目并勾选依赖 最基本的要这两个依赖即可 新建一个Controller层的…

Dubbo v Spring Cloud:两大技术栈如何选型?

Java全能学习面试指南&#xff1a;https://javaxiaobear.cn 提到微服务开源框架&#xff0c;不可不说的是 Dubbo 和 Spring Cloud&#xff0c;这两大框架应该是大家最熟悉的微服务解决方案&#xff0c;也是面试中的热点。今天我们梳理下 Dubbo 和 Spring Cloud 的应用特性&…

win10 U盘安装教程

一年内&#xff0c;第三次重装电脑了&#xff0c;我必须要写一份教程了。从制作U盘开始&#xff0c;到重装系统&#xff0c;全部都记录一下&#xff0c;以备不时之需。 首先&#xff0c;找一个U盘&#xff0c;如果U盘内有需要文件&#xff0c;请自行备份&#xff0c;因为这个U盘…

“双节”出游,VR智慧景区让你的旅游更具“心价比”

中秋国庆八天长假落幕&#xff0c;全国旅游消费市场人气旺、活力足&#xff0c;黄金周旅游消费的变化凝结成为新的文旅趋势&#xff0c;更多的游客会选择人少、景美、价优的错峰游&#xff0c;为了享受品质游玩&#xff0c;VR全景展示为众多游客带来旅游新体验&#xff0c;让你…

分类预测 | MATLAB实现KOA-CNN-BiLSTM开普勒算法优化卷积双向长短期记忆神经网络数据分类预测

分类预测 | MATLAB实现KOA-CNN-BiLSTM开普勒算法优化卷积双向长短期记忆神经网络数据分类预测 目录 分类预测 | MATLAB实现KOA-CNN-BiLSTM开普勒算法优化卷积双向长短期记忆神经网络数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.MATLAB实现KOA-CNN-BiLST…

洗地机怎么选?2023年洗地机推荐

洗地机结合洗地、拖地、扫地的功能&#xff0c;在日常生活中备受关注&#xff0c;他能帮助我们更加节省时间和节省体力&#xff0c;但是面对参差不齐的洗地机市场如何选到适合自己的呢&#xff0c;下文整理了几款非常值得入手的性价比型号&#xff0c;供大家选择参考。 一、CE…

SpringBoot项目创建

创建SpringBoot项目&#xff1a; 选择maven项目&#xff0c;选择Java版本 选择springboot版本&#xff08;这里随便选择&#xff0c;后面会进行更改&#xff0c;用不到这么高的版本&#xff09;&#xff0c;选择所需要的对应工具。 然后下一步即可。 配置修改 &#xff0c;结构…

7346-2015 控制电机基本外形结构型式

声明 本文是学习GB-T 7346-2015 控制电机基本外形结构型式.pdf而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了控制电机的机座号、外形及安装尺寸、轴伸型式、出线方式、标记及铭牌。 本标准适用于各类控制电机(以下简称电机),其…

漏洞复现--中远麒麟堡垒机SQL注入

免责声明&#xff1a; 文章中涉及的漏洞均已修复&#xff0c;敏感信息均已做打码处理&#xff0c;文章仅做经验分享用途&#xff0c;切勿当真&#xff0c;未授权的攻击属于非法行为&#xff01;文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直…