定义
改变一个对象及其子对象的线程亲和性。无法移动一个具有父对象的对象。事件处理过程将在目标线程(targetThread)中进行。
为了移动一个对象到主进程,使用QApplication::instance()获取指向当前应用的指针,然后通过QApplication::thread()方法获取该应用程序对象所在的线程。例如
myObject->moveToThread(QApplication::instance()->thread());
如果参数targetThread为0,该对象以及其子对象的所有事件处理停止。
注意,该对象中的所有激活状态的定时器都将被重置。在当前线程中,定时器将被停止,并在目标线程(targetThread)中重新启动,并具有相同的时间间隔。因此,一般来说在线程间移动一个对象会使定时器事件产生不确定地延迟。
在该对象的线程亲和性将要发生改变之前,事件QEvent::ThreadChange将被发送给该对象。可以在处理该事件的时执行任何特殊的操作。注意,任何投递给该对象的新事件都将在目标线程中处理。
警告,该函数不是线程安全的;当前线程对象必须具有同样的当前线程亲和性。换句话说,这个函数之恶能将当前线程的对象“推送”到另一个线程中,而不能将任意线程中的对象“拉取”到当前线程。
参考