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

QT 创建线程的几种方法

//qt创建线程的几种方法

//在Qt中,创建线程的主要方法有以下几种:

//1.继承QThread类重写run方法

class MyThread : public QThread

{

Q_OBJECT

public:

void run() override

{

// 在这里执行你的代码

}

};

// 使用

MyThread *myThread = new MyThread(this);

myThread->start();

//2.使用Qt的QRunnable类

class MyRunnable : public QRunnable

{

public:

void run() override

{

// 在这里执行你的代码

}

};

// 使用

MyRunnable *myRunnable = new MyRunnable();

QThreadPool::globalInstance()->start(myRunnable);

//3.使用Qt的QThread的moveToThread方法

class Worker : public QObject

{

Q_OBJECT

public slots:

void doWork(const QString &parameter)

{

// 在这里执行你的代码

}

};

class Controller : public QObject

{

Q_OBJECT

QThread workerThread;

public:

Controller()

{

Worker *worker = new Worker;

workerThread.start();

worker->moveToThread(&workerThread);

connect(this, &Controller::operate, worker, &Worker::doWork);

connect(&workerThread, &QThread::finished, worker, &QObject::deleteLater);

}

signals:

void operate(const QString &parameter);

};

// 使用

Controller *controller = new Controller();

controller->operate("parameter");

//4.使用Qt的QRunnable和QThreadPool

class Worker : public QObject

{

Q_OBJECT

public:

void doWork(const QString &parameter)

{

// 在这里执行你的代码

}

};

// 使用

Worker *worker = new Worker();

QRunnable *runnable = new QRunnable([worker]()

{

worker->doWork("parameter");

});

QThreadPool::globalInstance()->start(runnable);

5.Qt 之 Concurrent,这里不描述,以后再说。

以上就是在Qt中创建线程的几种方法,可以根据实际需求选择合适的方法。

http://www.lryc.cn/news/333347.html

相关文章:

  • RocketMQ的简单使用
  • 速盾:服务器有cdn 带宽上限建议多少
  • 智慧工地安全+绿色施工方案
  • SQL Server 存储过程:BBS论坛(表结构文档下载及30个存储过程)
  • 03 Python进阶:MySQL - mysql-connector
  • InnoDB 行记录格式(“存储一行行数据的结构“)
  • 【洛谷】P9236 [蓝桥杯 2023 省 A] 异或和之和
  • ThreadLocal加切面实现线程级别的方法缓存
  • 使用 Flume 将 CSV 数据导入 Kafka:实现实时数据流
  • 对代理模式的理解
  • #QT项目实战(天气预报)
  • 数据挖掘|关联分析与Apriori算法详解
  • ChatGPT Excel 大师
  • C 语言中的 end, _end 符号
  • 绿联 安装PDF工具
  • 备战蓝桥杯---数论相关问题
  • 苹果手表Apple Watch录了两个半小时的录音,却只能播放4秒,同步到手机也一样,还能修复好吗?
  • RGB三通道和灰度值的理解
  • ARM、X86、RISC-V三分天下
  • 力控机器人原理及力控制实现
  • 最小生成树
  • 二维动画制作软件 Animate 2024 for mac激活版
  • 相对论中关于光速不变理解的补充
  • 面试(04)————JavaWeb
  • Debian12 使用 nginx 与 php8.2 使用 Nextcloud
  • Java设计模式:代理模式的静态和动态之分(八)
  • 【论文通读】AgentStudio: A Toolkit for Building General Virtual Agents
  • wordvect嵌入和bert嵌入的区别
  • 渗透测试练习题解析 5(CTF web)
  • PCA(Principal Component Analysis,主成分分析)