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中创建线程的几种方法,可以根据实际需求选择合适的方法。

相关推荐
侃侃_天下1 天前
最终的信号类
开发语言·c++·算法
echoarts1 天前
Rayon Rust中的数据并行库入门教程
开发语言·其他·算法·rust
Aomnitrix1 天前
知识管理新范式——cpolar+Wiki.js打造企业级分布式知识库
开发语言·javascript·分布式
每天回答3个问题1 天前
UE5C++编译遇到MSB3073
开发语言·c++·ue5
伍哥的传说1 天前
Vite Plugin PWA – 零配置构建现代渐进式Web应用
开发语言·前端·javascript·web app·pwa·service worker·workbox
小莞尔1 天前
【51单片机】【protues仿真】 基于51单片机八路抢答器系统
c语言·开发语言·单片机·嵌入式硬件·51单片机
我是菜鸟0713号1 天前
Qt 中 OPC UA 通讯实战
开发语言·qt
JCBP_1 天前
QT(4)
开发语言·汇编·c++·qt·算法
Brookty1 天前
【JavaEE】线程安全-内存可见性、指令全排序
java·开发语言·后端·java-ee·线程安全·内存可见性·指令重排序
百锦再1 天前
[特殊字符] Python在CentOS系统执行深度指南
开发语言·python·plotly·django·centos·virtualenv·pygame