在Qt 4.4 版本后,之所以 Qt 官方对 QThread 类进行了大刀阔斧地改革,我认为这是想让多线程编程更加符合 C++ 语言的「面向对象」特性。继承的本意是扩展基类的功能,所以继承 QThread 并把耗时操作代码塞入 run() 函数中的做法怎么看都感觉不伦不类。 2.1 我们该把耗时代码放在哪里? 暂时不考虑多线程,先思考这样...
1. **耗时代码的合理放置**:在考虑多线程编程时,应将耗时操作放入类中,利用`QObject::moveToThread()`函数在不破坏类结构的前提下在新线程中运行。这样不仅保持了代码的逻辑清晰,还充分利用了Qt的信号槽机制。2. **使用`moveToThread()`的优势**:通过`moveToThread()`函数改变对象的线程亲和...
追溯历史,在 Qt 4.4 版本以前的 QThread 类是个抽象类,要想编写多线程代码唯一的做法就是继承 QThread 类。但是之后的版本中,Qt 库完善了线程的亲和性以及信号槽机制, 我们有了更为优雅的使用线程的方式,即 QObject::moveToThread() 。这也是官方推荐的做法,遗憾的是网上大部分教程没有跟上技术的进步,依然采...