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

QT学习之旅 - QThread多线程

文章目录

      • 首先是主线程
      • 其次是一个程序
      • 通过一个QThread来放入程序
      • 进阶一点: 手动开启关闭线程
      • 俩个线程

其实QT中的thread(线程)是很容易的

首先是主线程

#include "mainwindow.h"
#include "ui_mainwindow.h"#include <QDebug>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//threadTest = new ThreadTest;//线程实例//threadTest->start();//开启线程for(int i=0;i<100;i++){qDebug() << "mainwindow i:" << i;_sleep(500);}}MainWindow::~MainWindow()
{delete ui;
}

其次是一个程序

#include "test.h"
#include <QDebug>Test::Test()
{for(int i=0;i<100;i++){qDebug() << "i=" << i;_sleep(1000);}
}Test::~Test(){}

通过一个QThread来放入程序

#include "threadtest.h"
#include <QDebug>ThreadTest::ThreadTest()
{}void ThreadTest::run(){test = new Test;
}
void ThreadTest::stop(){}ThreadTest::~ThreadTest(){}

一个简单的线程就实现了

进阶一点: 手动开启关闭线程

添加一个按键,通过信号和槽来控制线程使能关闭

#include "mainwindow.h"
#include "ui_mainwindow.h"#include <QDebug>
#include <QPushButton>bool isTrue;MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);isTrue = true;threadTest = new ThreadTest;connect(ui->pushButton,&QPushButton::clicked,this,&MainWindow::on_button_test);for(int i=0;i<100;i++){qDebug() << "mainwindow i:" << i;_sleep(100);}}void MainWindow::on_button_test(){if(isTrue){threadTest->start();isTrue = false;ui->pushButton->setText("关闭线程");}else{threadTest->stop();isTrue = true;ui->pushButton->setText("开启线程");}
}MainWindow::~MainWindow()
{delete ui;
//    threadTest->de;delete threadTest;
}
#include "threadtest.h"
#include <QDebug>ThreadTest::ThreadTest()
{}void ThreadTest::run(){test = new Test;
}
void ThreadTest::stop(){this->quit();this->wait();
}ThreadTest::~ThreadTest(){}

Test不变。现象mainwindow i:99(执行完)后窗口出现,之后开启线程。开启后立马关闭,会执行到i=99(线程执行完)后才关闭

俩个线程

继第一个线程后,我们再来一个线程,也是在主函数中实例。查看情况

#include "threadtesttwo.h"
#include <QDebug>ThreadTestTwo::ThreadTestTwo()
{}
void ThreadTestTwo::run(){for(int i=0;i<100;i++){qDebug() << "threadTwo i=" << i;_sleep(200);}
}
void ThreadTestTwo::stop(){}
ThreadTestTwo::~ThreadTestTwo(){}
#include "mainwindow.h"
#include "ui_mainwindow.h"#include <QDebug>
#include <QPushButton>bool isTrue;MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);isTrue = true;threadTest = new ThreadTest;threadTestTwo = new ThreadTestTwo;connect(ui->pushButton,&QPushButton::clicked,this,&MainWindow::on_button_test);}void MainWindow::on_button_test(){if(isTrue){threadTest->start();threadTestTwo->start();isTrue = false;ui->pushButton->setText("关闭线程");}else{threadTest->stop();threadTestTwo->stop();isTrue = true;ui->pushButton->setText("开启线程");}
}MainWindow::~MainWindow()
{delete ui;delete threadTest;
}

相关文章:

QT学习之旅 - QThread多线程

文章目录 首先是主线程 其次是一个程序 通过一个QThread来放入程序 进阶一点: 手动开启关闭线程俩个线程 其实QT中的thread(线程)是很容易的 首先是主线程 #include "mainwindow.h" #include "ui_mainwindow.h"#include <QDebug>MainWindow::MainWin…...

PROFINET转TCP/IP网关TCP/IP协议的含义是

大家好&#xff0c;今天要和大家分享一款自主研发的通讯网关&#xff0c;远创智控YC-PN-TCPIP。这款网关可是集多种功能于一身&#xff0c;PROFINET从站功能&#xff0c;让它在通讯领域独领风骚。想知道这款网关如何实现PROFINET和TCP/IP网络的连接吗&#xff1f;一起来看看吧&…...

计算机网络基础第六章

一、应用层概述 1.1 网络应用模型 1.1.1 客户/服务器(C/S)模型 1.1.2 P2P模型 二、域名解析系统——DNS系统 2.1 域名 2.2 域名服务器 2.3 域名解析过程 三、文件传输协议——FTP 3.1 FTP服务器和用户端 3.2 FTP工作原理 四、电子邮件 4.1 电子邮件系统概述 4.2 简单邮件传送…...

MobPush:Android客户端SDK厂商通道回执配置指南

华为厂商回执配置 登录华为AppGallery Connect网站。在左侧菜单点击增长 - 推送服务&#xff0c;进入推送服务页面后&#xff0c;点击配置页签&#xff0c;检查应用回执状态&#xff0c;如未开通请点击右侧开通按钮。 如已开通&#xff0c;点击修改按钮&#xff0c;弹出“选择…...

Karmada: Open, Multi-Cloud, Multi-Cluster Kubernetes Orchestration

Karmada是一个开源的多云应用编排和管理平台&#xff0c;旨在帮助用户在多个云提供商之间无缝地部署、编排和管理应用程序。 Karmada&#xff08;Kubernetes Armada&#xff09;是一个Kubernetes管理系统&#xff0c;它使您能够在多个Kubernetes集群和云环境中运行云原生应用程…...

arcgis拓扑检查

不能有悬挂点 不能有伪结点***路网处理很重要&#xff0c;看研究吧。 一直默认到最后。 导入要素类&#xff0c;单个 toupu2右键新建拓扑&#xff08;T&#xff09; 一般选不能有悬挂点&#xff0c;不能重叠。 一路默认 是 拉进图层可视化 线要素的话记得添加字段length&#…...

icp许可证 办理流程(icp资质申请条件)

icp许可证 办理流程(icp资质申请条件)是什么&#xff1f; ICP经营许可证是可以线上无忧办理的&#xff0c;包下证&#xff0c;流程也很简单&#xff0c;只需要你提供企业营业执照、法人身份证这些基础材料就可以。加急10-20工作日拿证&#xff0c;普通20-60工作日拿证。 在了解…...

三菱PLC 控制灯一秒钟交替闪烁

三菱PLC中常用的特殊继电器&#xff1a; M8000 上电一直ON标志 M8002 上电导通一次 M8004 PLC出错 M8005 PLC备用电池电量低标志 M8011 10ms时钟脉冲 M8012 100ms时钟脉冲 M8013 1s时钟脉冲 M8014 1min时钟脉冲 M8034…...

金融数据库的战场,太平洋保险和OceanBase打了场胜仗

点击关注 文丨刘雨琦 “数据库的国产替代&#xff0c;必须经过严格的考虑&#xff0c;保证不会出错&#xff0c;所以大多数企业的领导层选择按兵不动或者简单扩容。因为不换就不会错&#xff0c;选了很久如果选错&#xff0c;还可能会出现重大事故。” 某银行数据库技术人员…...

IP协议【图解TCP/IP(笔记九)】

文章目录 IP即网际协议IP相当于OSI参考模型的第3层网络层与数据链路层的关系 IP基础知识IP地址属于网络层地址路由控制■ 发送数据至最终目标地址■ 路由控制表 数据链路的抽象化IP属于面向无连接型 IP即网际协议 TCP/IP的心脏是互联网层。这一层主要由IP&#xff08;Internet…...

C#仿热血江湖

目录 1 定义属性 2 GClass86_0 3 Int32 4 List 5 NpcID 定义属性 private int _NpcID; private GClass86 gclass86_0 = new GClass86(); private int int_0;...

Nginx静态资源部署

要在 Nginx 上部署静态资源&#xff0c;可以按照以下步骤进行操作&#xff1a; 确保已经安装并配置好 Nginx。如果还没有安装&#xff0c;可以参考 Nginx 的官方文档进行安装和配置。 将静态资源文件复制到 Nginx 的默认静态文件目录下。默认情况下&#xff0c;Nginx 的静态文…...

javaee jstl表达式

jstl是el表达式的扩展 使用jstl需要添加jar包 package com.test.servlet;import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;import javax.servlet.ServletException; import javax.servlet…...

ChatGPT是否具有记忆能力?

ChatGPT在某种程度上具有记忆能力&#xff0c;但它的记忆能力有限且不像人类的记忆那样全面和持久。以下是对ChatGPT的记忆能力的详细分析&#xff1a; 1. 上下文记忆&#xff1a;ChatGPT可以在对话过程中记住先前的对话历史&#xff0c;以便更好地理解和回应后续的问题。通过…...

ARP协议(地址分析协议)

系列文章目录 数通王国历险记&#xff08;4&#xff09; 目录 前言 一&#xff0c;什么是地址解析协议&#xff08;ARP&#xff09; 二&#xff0c;封装和解封装 三&#xff0c;为什么需要地址解析协议&#xff08;ARP&#xff09; 四&#xff0c;ARP的验证实验 4.1&#x…...

c# websocket client java websocket server

实现功能&#xff1a;c# websocket 客户端 连接 java websocket 服务端 一&#xff0c;c# websocket 客户端 nuget websocketsharp-netstandard Program.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threadi…...

【玩转循环】探索Python中的无限可能性

前言 循环可能是每个编程语言中使用比较多的语法了&#xff0c;如果能合理利用好循环&#xff0c;就会出现意想不到的结果&#xff0c;大大地减少代码量&#xff0c;让机器做那些简单枯燥的循环过程&#xff0c;今天我将为大家分享 python 中的循环语法使用。&#x1f697;&am…...

网安学习经历小记

明明自觉学会了不少知识&#xff0c;可真正开始做题时&#xff0c;却还是出现了“一支笔&#xff0c;一双手&#xff0c;一道力扣&#xff08;Leetcode&#xff09;做一宿”的窘境&#xff1f;你是否也有过这样的经历&#xff0c;题型不算很难&#xff0c;看题解也能弄明白&…...

MyBatis之慎用association

这里先总结一下 association 存在的问题。 一、内嵌查询时存在报错Id找不到及内存溢出隐患 二、一对多关系数据重复问题 三、多层嵌套内层 association 查询结果为null 或 非预期的值 一、内嵌查询时存在报错Id找不到及内存溢出隐患 参考&#xff1a; https://www.lmlphp.co…...

【Java/大数据】Kafka简介

Kafka简介 Kafka概念关键功能应用场景 Kafka的原理Kafka 的消息模型早期的队列模型发布-订阅模型Producer、Consumer、Broker、Topic、PartitionPartitionoffsetISR Consumer Groupleader选举Controller leaderPartition leader producer 的写入流程 多副本机制replicas的同步时…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

React---day11

14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store&#xff1a; 我们在使用异步的时候理应是要使用中间件的&#xff0c;但是configureStore 已经自动集成了 redux-thunk&#xff0c;注意action里面要返回函数 import { configureS…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的&#xff0c;可以通过集中管理和高效资源的分配&#xff0c;来支持多个独立的网站同时运行&#xff0c;让每一个网站都可以分配到独立的IP地址&#xff0c;避免出现IP关联的风险&#xff0c;用户还可以通过控制面板进行管理功…...

【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)

LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 题目描述解题思路Java代码 题目描述 题目链接&#xff1a;LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...

系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文通过代码驱动的方式&#xff0c;系统讲解PyTorch核心概念和实战技巧&#xff0c;涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...