QT中使用moveToThread让任务在子线程中进行

原理:

1、使用QThread生成一个线程对象

2、任务对象moveToThread

因为moveToThread是QObject类的函数,所以定义任务对象的类的时候,要让该类继承自QObject函数,继承其moveToThread函数。

3、QThread 生成的线程对象调用run函数,开启线程

4、使用信号和槽,连接任务对象的任务处理函数。注意,第二个函数的主体是任务处理对象

5、如何释放该线程资源,还不清楚。研究中

cpp 复制代码
myWav = new UseWav();                       //处理任务的对象
    QThread *thread = new QThread();            //创建一个线程对象

    myWav->moveToThread(thread);                //将人物对象添加到线程对象中

    thread->start();                            //线程启动

    qDebug() << "The adress of the server" << QThread::currentThread();

    connect(btn,&QPushButton::clicked,myWav,[=](){  //注意这里的信号接受者
        myWav->wavWorking("aplay 0.wav");       //任务处理函数
    });
相关推荐
devilnumber1 分钟前
Java 迭代器(Iterator)完全指南:从入门到实战
java·开发语言·迭代器
罗超驿2 分钟前
13.Java多线程进阶:手动实现线程池与定时器机制详解
开发语言·面试·javaee
弹简特6 分钟前
【Java项目-轻聊】10-实现会话管理模块
java·开发语言·数据库
人道领域8 分钟前
Java后端开发者转型AIAgent开发路线指南
java·开发语言
许彰午12 分钟前
35_Java设计模式之工厂模式
java·开发语言·设计模式
凡人叶枫14 分钟前
Effective C++ 条款32:确定你的 public 继承塑模出 is-a(是一种)关系
java·linux·开发语言·c++·嵌入式开发
码云骑士21 分钟前
18-生成器不只是省内存(上)-yield的状态机模型与帧暂停
c语言·开发语言·python
我喜欢就喜欢21 分钟前
C++ 连接 Ollama 本地大模型:从原生 HTTP 调用到高性能封装实践
开发语言·c++·http
金色熊族31 分钟前
Qt绘制图形时自定义点划线间隔的办法--setDashPattern
qt
踏着七彩祥云的小丑1 小时前
Go学习第8天:接口 + 泛型 + 错误处理
开发语言·学习·golang·go