一、阐明释义
对于使用过Qt的技术人员来说,一谈到线程就必然想到QThread类,甚至一些新手就将QThread认作是线程,其实这是不恰当的。然我们来看一下官方文档的描述,说“The QThread class provides a platform-independent way to manage threads.”,翻译过来就是说“QThread类提供了一个平台无关的方式去管理线程”。这是官方文档Detailed Description的第一句话,这就是对QThread类的一个明确定义。管理线程中的管理字眼很重要,它说明了一种间接性,也就是说我们是通过某种间接的手段达到了我们的目的,而不是直接的。举个例子,对于使用过数据库的技术人员来说,大多数人都会选择一个简单易用的界面友好的数据库管理工具,该种工具对提高开发人员工作效率来说是非常重要的。那么问题来了,你能够说这种数据库管理工具就是数据库吗,显然不能。QThread类就类似于这种数据库管理工具,它隐藏了实现细节,暴露给开发人员哪些必要的东西。我认为这就是Qt的一个优势所在,一者它降低了学习使用的门槛,二者它简化了使用的方式,这才符合现**发语言的大方向。这种优势带来的好处就是是开发人员能够快速的完成功能开发,缩短软件开发周期,时间就是金钱呐! --- 技术知识一种实现手段,而不应该成为一种被膜拜的对象(我是一个使用主义者。。。)
二、moveToThread的用法及注意事项
这种方法是Qt官方推荐的方法,使用方法就是定义一个类继承自QObject,然后将其moveToThread到一个QThread类对象中,然后通过信号和槽的方式来达到槽中的代码在线程中执行的目的,官方文档上有一段实例代码可供参考。官方文档描述中有一段话说明了为什么推荐大家使用这种方法,“However, you are free to connect the Worker's slots to any signal, from any object, in any thread. It is safe to connect signals and slots across different threads, thanks to a mechanism called