QThread的两种用法

使用QT的线程类的推荐方法是将其作为一个线程的管理类来使用。在这种用法下,QThread类最重要的作用是创建了一个可以承载不同对象在其中运行,并使用QT的信号和槽机制的线程环境。声明了QThread类的线程管理器之后,线程中需要运行的相应对象(必须是QOJBECT)须调用moveToThread函数将其槽函数的运行环境移到此线程管理器管理的线程,然后线程管理器调用start函数,建立子线程,同时开启子线程上的事件循环。这意味着,在此线程中可以有多个对象,同时可以与其他线程利用信号和槽机制进行数据交换。 这是一种面向事件机制的线程实现模式。

使用的一种使用方法是继承QThread,重写run的虚函数。此时继承的线程对象在start函数后将开始运行run函数,run函数运行结束后,线程退出。与前一种使用方法不同的是,run函数中没有调用exec函数,线程不会进入事件循环,无法处理槽函数(但可以发出信号)。

参考文档:

qt5 QThread文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QThreadQt框架中用于创建和管理线程的类。使用QThread可以方便地创建多线程应用程序。在QThread中,有两种方法可以创建线程:子类化QThread和使用moveToThread方法。 子类化QThread的方法是通过创建一个继承自QThread的子类,并重写其run()函数来定义线程的工作内容。当自定义的线程类调用start()函数后,线程会开始执行run()函数中定义的任务。需要注意的是,子类化QThread的槽函数不会由自身的线程执行,而是由该子线程的拥有者所在线程(一般是主线程)来执行。 使用moveToThread方法的方法是将需要执行的工作封装在一个类中,将每个任务定义为一个槽函数,并建立触发这些槽的信号。然后,将这个类调用moveToThread方法交给一个QThread对象,并调用QThread的start()函数使其处理事件循环。这样,只需要发出对应的信号,线程就可以执行相应的任务。相比于子类化QThread,moveToThread方法可以在一个worker类中定义多个需要做的工作,并通过发出不同的信号来执行这些工作。 总结起来,子类化QThread的方法适用于只需要执行一个任务的线程,而使用moveToThread方法适用于需要执行多个不同任务的线程。\[1\] 参考资料: \[1\] 引用\[1\]中的内容 #### 引用[.reference_title] - *1* *2* *3* [Qt的线程(两种QThread类的详细使用方式)「建议收藏」](https://blog.csdn.net/m0_60259116/article/details/128206276)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值