【QT】qt中多线程的使用

news/2024/10/18 0:34:49/

前景:
C#中的多线程举例

	private Thread threadDownLoadParameter;threadDownLoadParameter = new Thread(new ThreadStart(parameterInterface.downParameterLoadData)); //parameterInterface 实例对象,downParameterLoadData 方法threadDownLoadParameter.Start();

qt中对应的多线程的使用举例
目标类继承QThread 覆写虚函数function run()

#include <QCoreApplication>
#include <QThread>
#include <QDebug>class ParameterI  : public QObject
{Q_OBJECTpublic slots:void downParameterLoadData(){// 在这里实现 downParameterLoadData 方法的功能qDebug() << "downParameterLoadData executed on thread" << QThread::currentThreadId();}
};class DownloaderThread : public QThread
{
public:void run() override{// 在这里创建 ParameterI  实例,并调用 downParameterLoadDataParameterI  parameterInterface;parameterInterface.downParameterLoadData();}
};int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);// 创建 DownloaderThread 实例DownloaderThread downloaderThread;// 启动线程downloaderThread.start();// 等待线程结束downloaderThread.wait();return a.exec();
}

补充: 2023年12月27日
线程类 QThread

// 和调用 exit() 效果是一样的
// 代用这个函数之后, 再调用 wait() 函数
[slot] void QThread::quit();
// 启动子线程
[slot] void QThread::start(Priority priority = InheritPriority);
// 线程退出, 可能是会马上终止线程, 一般情况下不使用这个函数
[slot] void QThread::terminate();// 线程中执行的任务完成了, 发出该信号
// 任务函数中的处理逻辑执行完毕了
[signal] void QThread::finished();
// 开始工作之前发出这个信号, 一般不使用
[signal] void QThread::started();

大丙
使用方式:
①需要创建一个线程类的子类,让其继承QT中的线程类 QThread
②重写父类的 run() 方法,在该函数内部编写子线程要处理的具体的业务流程
③在主线程中创建子线程对象,new 一个就可以了
④启动子线程, 调用 start() 方法

class MyThread:public QThread
{protected:void run(){........}
}③MyThread * subThread = new MyThread;④subThread->start();
ps:不能在类的外部调用run() 方法启动子线程,在外部调用start()相当于让run()开始运行【见于connect操作时,接收的对象的不同

特别留意:
当子线程别创建出来之后,父子线程之间的通信可以通过信号槽的方式,注意事项:

在Qt中在子线程中不要操作程序中的窗口类型对象, 不允许, 如果操作了程序就挂了
只有主线程才能操作程序中的窗口对象, 默认的线程就是主线程, 自己创建的就是子线程


http://www.ppmy.cn/news/1283220.html

相关文章

Linux阶段性项目——FTP服务器

一、FTP服务概述 ​FTP为File Transfer Protocol的缩写&#xff0c;即文件传输协议&#xff0c;是TCP/IP 协议族中的协议之一。FTP是一个用于在计算机网络上在客户端和服务器之间进行文件传输的应用层协议。RFC 959定义了FTP协议规范。是互联网上使用的最广泛的文件传输协议&a…

不浪费时间,昂首资本1分钟如何快速学习MT4价差

不要浪费时间在手工计算上&#xff0c;昂首资本解释一下如何快速学习MT4价差&#xff0c;。 想要在MT4中输入交易时&#xff0c;需要在交易窗口中设置未来交易的参数。在同一个窗口中&#xff0c;可以看到卖价和买价。如果在上面的例子中比较这两个价格&#xff0c;就会发现两…

JVM基础篇---02

为什么需要用户自定义类加载器&#xff1a; 扩展类加载器的功能&#xff1a; Java的默认类加载器主要有三个&#xff0c;分别是引导类加载器、扩展类加载器和应用程序类加载器。其中&#xff0c;引导类加载器和扩展类加载器是由JVM实现的&#xff0c;用户无法修改其行为。而应用…

Ensp DHCP 接口地址池(配置命令)

难易度&#xff1a;* 拓补图&#xff1a; 实验环境&#xff1a;一台路由器&#xff0c;两台交换机&#xff0c;四台pc机 需求&#xff1a; 左边两台PC 自动分配 IP为1.0网段 右边两台PC 自动分配 2.0 网段&#xff0c; 路由器配置命令 左边接口 分配1.0网段地址 [Huawei]…

【三维生成】稀疏重建、Image-to-3D方法(汇总)

系列文章目录 总结一下近5年的三维生成算法&#xff0c;持续更新 文章目录 系列文章目录一、LRM&#xff1a;单图像的大模型重建&#xff08;2023&#xff09;摘要1.前言2.Method3.实验 二、SSDNeRF&#xff1a;单阶段Diffusion NeRF的三维生成和重建&#xff08;ICCV 2023&am…

排样问题 强化学习组合优化

目录 排样问题 上海友图&#xff1a; 2d不规则图像排样 java代码 有一定效果&#xff1a; 2023年像是python 矩形框 算法讲解 无代码 强化学习加组合优化 Max Rects Packer 最大矩形装箱算法 排样问题 2.排样问题(nesting problem)又称为下料问题(cutting and stock prob…

Android Studio 如何隐藏默认标题栏

目录 前言 一、修改清单文件 二、修改代码 三、更多资源 前言 在 Android 应用中&#xff0c;通常会有一个默认的标题栏&#xff0c;用于显示应用的名称和一些操作按钮。但是&#xff0c;在某些情况下&#xff0c;我们可能需要隐藏默认的标题栏&#xff0c;例如自定义标题栏…

2024年元旦节放假通知

致尊敬的客户以及全体同仁&#xff1a; 旧岁已展千重锦&#xff0c;新年再进百尺竿。在这辞旧迎新之际&#xff0c;易天光通信提前祝您元旦快乐&#xff01;生意兴隆&#xff0c;身体健康&#xff0c;万事如意&#xff01;根据国家法定假期的规定&#xff0c;并结合公司实际情…