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");       //任务处理函数
    });
相关推荐
yyytucj3 分钟前
优化 PHP-FPM 参数配置:实现服务器性能提升
服务器·开发语言·php
鲤籽鲲8 分钟前
C# 中 [MethodImpl(MethodImplOptions.Synchronized)] 的使用详解
java·开发语言·c#
SomeB1oody16 分钟前
【Rust自学】19.5. 高级类型
开发语言·后端·设计模式·rust
逆风局?23 分钟前
Java基础——分层解耦——IOC和DI入门
java·开发语言
通信.萌新1 小时前
【Qt】常用的容器
开发语言·qt
美味小鱼1 小时前
Rust枚举(Enum)完全指南:用类型安全表达多样性
开发语言·安全·rust
二十雨辰1 小时前
[Java基础]面向对象
java·开发语言
m0_747124531 小时前
用QT做一个网络调试助手
网络·qt·php
007php0072 小时前
HTTPS域名443端口证书到期问题排查与解决
开发语言·网络·网络协议·计算机网络·http·golang·https
关关钧2 小时前
【R语言】R语言安装包的相关操作
开发语言·python·r语言