QT界面编程中,UI线程扮演用户进行交互的角色,子线程用于界面与操作系统数据传递的角色.
头文件
#include <QThread> ----QThread类 该类继承QObject
QT线程操作步骤
1)创建一个类继承QThread
2)在类中重写run虚函数,该函数就是子线程进行的任务.run函数只执行一次,当run函数执行完毕子线程便退出
3)创建子线程对象
在创建线程时常用函数
setObjectName( QString )----线程起名
start()-----启动线程,子线程不调用该函数就不会启动
quite()----退出线程
terminate()---终止线程
注: 一个类中要支持信号和槽,要继承QObject和定义宏Q_OBJECT
基本案例:利用子线程来实现计数,并将计数的结果更新到UI
第一步:创建子线程类
//发一条通知给UI线程(UI控件)
class MyThread : public QThread
{
Q_OBJECT //在该类中,可以支持信号和槽,另外,该类还要间接或者直接继承于QObject
public:
explicit MyThread(QObject *parent = nullptr){}
~MyThread(){}
void run() override
{
static int i = 0;
while (1) {
QThread::sleep(1);
emit sendMsg(QString::number(i++));
}
}
signals:
void sendMsg(const QString&