锁住该线程直到下面的情况之一出现:
(1)和该线程连接的对象已经执行完成(例如:当它从run()中返回时)
如果该线程已经结束,该函数将返回true。
如果该线程还没有开始,它也返回true。
(2)time毫秒已经过去。如果time是ULONG_MAX(默认值),那么等待将绝不会超时(线程必须从run()中返回)。如果等待超时,该函数将返回false。
这提供了与POSIX的pthread_join()函数类似的功能。
告诉线程的事件循环退出伴随着一个返回值。
调用该函数后,线程离开事件循环,从该调用返回到QEventLoop::exec().
QEventLoop::exec()函数返回returnCode。
按照惯例,returnCode=0,意味着成功,任何非0值意味着错误。
注意这不像C函数库中的同名函数,该函数返回给调用者。它是停下的事件处理者。
在QThread::exec()再次被调用之前,这个线程中不会再启动QEventLoops。
如果QThread::exec()中的eventloop没有运行,那么对QThread::exec()的下一次调用也会立即返回。
进入事件循环和等待直到exit()被调用,返回来自exit()的值。该值返回0如果exit()是通过quit()来调用的。
这个函数应该在run()中调用。必须调用此函数来启动事件处理。
在这个示例中,线程将退出在run函数返回后。除非你调用exec(),否则将没用任何事件循环运行。
记住QThread实例生存在初始化它的旧线程,不是生存在调用run()的新线程是重要的。
这意味着QThread的槽函数将在旧线程执行。因此,希望在新线程中调用槽函数的开发者必须使用
worker-object方法,新槽不应该直接被执行在一个子类化的QThread中。
当子类化QThread时,注意构造者在旧线程执行,run()在新线程执行。
如果一个成员变量被两个函数访问,那么该变量可能被两个不同的线程访问。检查它是否安全。
在跨不同线程与对象交互时必须小心。详细信息请参见同步线程。