【嵌入式Qt开发入门】Qt如何使用多线程——初识QThread

文章介绍了在Qt中使用QThread类创建多线程的方法,以避免耗时操作导致的界面冻结。通过继承QThread并重写run()方法,将耗时任务放入新线程执行,保持界面响应。文章提供了一个应用实例,展示了如何在点击按钮后启动线程并在完成后发送信号到主线程。此外,还提到了线程的退出和同步问题。
摘要由CSDN通过智能技术生成

        我们写的一个应用程序,应用程序跑起来后一般情况下只有一个线程,但是可能也有特殊情况。比如我们前几篇的例程都跑起来后只有一个线程,就是程序的主线程。线程内的操作都是顺序执行的。但试着想一下,我们的程序顺序执行,假设我们的用户界面点击有某个操作是比较耗时的。您会发现界面点击完了,点击界面对应的操作还没有完成,所以就会冻结界面,不能响应,直到操作完成后,才返回到正常的界面里,对用户的体验也会造成极其糟糕的影响。

        这种情况我们一般是创建一个单独的线程来执行这个比较耗时的操作。比如我们使用摄像头拍照保存照片。也许你会觉得在电脑上使用 Qt 拍照,处理起来非常快,根本也不需要开启一个线程来做这种事。但是,我们是否考虑在嵌入式的 CPU 上做这种事情呢?嵌入式的 CPU 大多数都没有电脑里的 CPU 主频(几 GHz)那么高,处理速度也不快。 此时我们就需要考虑开多一个线程来拍照了。拍完照再与主线程(即程序原来的线程)处理好照片的数据,就完成了一个多线程的应用程序了。

        官方文档里说,QThread 类提供了一种独立于平台的方法来管理线程。QThread 对象在程序中管理一个控制线程。QThreads 在 run()中开始执行。默认情况下,run()通过调用 exec()来启动事件循环,并在线程中运行 Qt 事件循环。您可以通过使用 QObject::moveToThread()将 worker 对象移动到线程来使用它们。

        QThread 线程类是实现多线程的核心类。Qt 有两种多线程的方法,其中一种是继承 QThread 的 run()函数,另外一种是把一个继承于 QObject 的类转移到一个 Thread 里。具体之区别读者们可以自己查阅。

        接下来用一两篇的篇幅来介绍如何

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值