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

相关推荐
南 阳5 分钟前
Python从入门到精通day58
开发语言·python
楚Y6同学5 分钟前
为什么 C++ 要设计函数重载
开发语言·c++
steins_甲乙5 分钟前
【无标题】
开发语言·c++
码云数智-大飞6 分钟前
PHP OPcache 深度调优:从性能陷阱到生产环境最佳实践
开发语言
weixin_433179336 分钟前
Python - 调试
java·开发语言·python
Elastic 中国社区官方博客7 分钟前
我们如何修复 OpenTelemetry 中基于 head 的采样
大数据·开发语言·python·elasticsearch·搜索引擎
20岁30年经验的码农9 分钟前
Java NIO底层实现原理
开发语言·php
飞鱼计划13 分钟前
EasyExcel 3.3.2 模板方式写入数据完整指南
java·开发语言
C++chaofan20 分钟前
RPC 框架序列化器实现深度解析
java·开发语言·网络·网络协议·rpc·序列化器