看了个开源库Stacer,里面使用到了QConcrrent,这个使用很方便,这里简单记录一下总结下Qt的线程创建方法。
Qt线程创建方法
- QThread继承
- QObject moveToThread
- QConcurrent::run
Qt中提到线程那么不得不说一下线程和界面组件的关系。
线程与界面组件
- 在QT中,所有界面组件相关的操作都必须在主线程中(也就是GUI thread),在Qt程序线程中不能直接创建QWidget之类的界面组件,也不能直接操作界面组件.
QThread线程如何操作界面组件
方法1
绑定线程对象的信号和UI对象的槽,线程中发送emit信号。
方法2
继承QEvent类,使用QApplication::postEvent()实现向界面发送事件
方法3
直接使用Invokes()函数来调用界面组件对象的信号槽 ,(可用来调用UI对象的私有信号或槽):