使用qt官方推荐的多线程使用方式,编写工作线程类MyThread,继承QObject,创建QThread线程对象thread。MyThread调用movetothread(thread),这样子在MyThread里面声音的singal及槽函数都会在子线程中运行。直接在主线程调用QMetaObject::invokemethod,可以实现跨线程调用。
工程线程类代码如下:
##hpp
#ifndef MYTHREAD_H
#define MYTHREAD_H
#include <QObject>
class Mythread : public QObject
{
Q_OBJECT
public:
explicit Mythread(QObject *parent = nullptr);
Q_INVOKABLE void test1();
Q_INVOKABLE void test2();
Q_INVOKABLE void test3();
signals:
};
#endif // MYTHREAD_H
##cpp
#include "mythread.h"
#include <QDebug>
#include <QThread>
Mythread::Mythread(QObject *parent)
: QObject{parent}
{
}
void Mythread::test1()
{
qDebug()<<Q_FUNC_INFO<<"111111111"<<QThread