先啰嗦几句,写一下传统的两种方法,最简单创建线程的方式在文章末尾
QThread子类
创建QThread的子类
重写子类的run方法
在主线程中创建QThread子类的对象指针
调用对象指针的start方法
QObject子类moveToThread(最复杂的方法)
创建QObject的子类,
在子类中定义一个或多个槽函数
在主线程中创建QThread的对象指针
在主线程中创建QObject子类对象指针
在主线程中创建一个自定义信号,并用connect来关联QObject子类中的槽函数
将QObject子类对象指针moveToThread到QThread子类的对象指针
worker->moveToThread(&workerThread)
QThread的对象指针start
发送信号,调用第5步中关联的槽函数
回归正题,最简单的创建线程的方法,不需要创建新类,不需要创建新文件
使用QThread类的静态方法create来创建一个对象
将子线程要执行的代码段通过lambda的形式传入create方法中
start之
实现代码如下:
QThread * th1=QThread::create([=]{
for (int i=0;i<30 ;i++ ) {
QDateTime now = QDateTime::currentDateTime();
qDebug()<<QString("%1").arg(now.toString("yyyy-MM-dd hh:mm:ss"));
QThread::msleep(200);
}
});
th1->start();
本文仅做学习笔记,不喜勿喷。