概述
针对应用程序在单线程运行时的窗口卡顿、性能差等问题,研究设计了QT多线程编程的两种实现方法。
一、方法一:使用QThread方式
(1)创建自定义类,继承线程类QThread
class MyThread:public QThread
(2)重载 run()方法,实现具体的业务流程
void run(){
业务流程;
调用exec();
}
(3)main函数里,实例化自定义类对象
MyThread * subThread = new MyThread
(4)main函数里, 调用start()方法,启动子线程
subThread->start()
(5)main函数里,调用exit()或者wait()方法,控制子线程
subThread->exit()
subThread->wait()
二、方法二:使用QObject中moveToThread方法
(1)创建自定义类,继承类QObject
class MyWork:public QObject
(2)自定义类里,定义公有成员函数,实现具体的业务逻辑
public: void working()
(3)main函数里,实例化QThread对象
QThread* sub = new QThread;
(4)main函数里,实例化自定义类对象
MyWork* work = new MyWork;
不可指定父对象:MyWork* work = new MyWork(this);
(5)将自定义对象移动到线程对象中
work->moveToThread(sub)
(6)main函数里, 调用start()方法,启动线程
sub->start();
(7)调用自定义类的对象函数,启动业务流程
connect(ui->startBtn, &QPushButton::clicked, work, &MyWork::working)
三、示例
QT多线程代码示例
总结
关于多线程的总结就这些了。