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

相关推荐
小杨同学yx32 分钟前
有关maven的一些知识点
java·开发语言
重生之我要当java大帝1 小时前
java微服务-尚医通-编写医院设置接口下
java·开发语言·sql
寻找华年的锦瑟1 小时前
Qt-QDir
开发语言·qt
小妖6661 小时前
vscode 怎么运行 c++ 文件
开发语言·c++
weixin_307779131 小时前
在 Microsoft Azure 上部署 ClickHouse 数据仓库:托管服务与自行部署的全面指南
开发语言·数据库·数据仓库·云计算·azure
鱼鱼说测试1 小时前
Linux下运行Jmeter
开发语言·python
鱼鱼说测试1 小时前
postman功能接口测试
开发语言·lua
Achou.Wang1 小时前
源码分析 golang bigcache 高性能无 GC 开销的缓存设计实现
开发语言·缓存·golang
绵羊20232 小时前
R语言绘制热图
开发语言·r语言
小冯记录编程2 小时前
深入解析C++ for循环原理
开发语言·c++·算法