QT线程创建的两种方法

一.方法一
1.主线程(TaskProcessing.h和TaskProcessing.cpp)
QT线程创建的两种方法_第1张图片
QT线程创建的两种方法_第2张图片
2.子线程(ThreadWork.h和ThreadWork.cpp)
QT线程创建的两种方法_第3张图片
QT线程创建的两种方法_第4张图片
二.方法二
QT提供的第二种线程的创建方式弥补了第一种方式的缺点,用起来更加灵活,步骤如下:
1.创建一个新的类,让这个类从QObject派生
class ThreadWork:public QObject
{

}
2.在这个类中添加一个公共的成员函数,函数体就是要子线程中执行的业务逻辑
class ThreadWork:public QObject
{
public:

//函数名字可以自定义
void working();//可以传参
}
3.在主线程中创建一个QThread对象,这就是子线程的对象
QThread* m_Thread = new QThread;
4.在主线程中创建工作的类对象(不能给创建的对象指定父对象)
ThreadWork *m_ThreadWork = new ThreadWork;
5.将ThreadWork对象移动到创建的子线程对象中,需要调用QObject类提供的moveToThread()方法
m_ThreadWork->moveToThread(m_Thread );
6.启动子线程,调用start(),这时候线程启动了。

主线程:(taskProcessing.h和taskProcessing.cpp)
QT线程创建的两种方法_第5张图片
QT线程创建的两种方法_第6张图片
子线程
QT线程创建的两种方法_第7张图片
QT线程创建的两种方法_第8张图片
最后显示效果
QT线程创建的两种方法_第9张图片

你可能感兴趣的:(QT,线程(QThread类),qt)