QThread会通过信号通知您线程何时开始(started())和结束(finished()),或者您可以使用isFinished()和isRunning()查询线程的状态。
您可以通过调用exit()或quit()来停止线程。在极端情况下,您可能需要强制终止执行中的线程。但是,这样做是危险的,不鼓励使用。请阅读terminate()和setTerminationEnabled()的文档以获取详细信息。
从Qt 4.8开始,可以通过将finished()信号连接到QObject::deleteLater()来释放在刚刚结束的线程中运行的对象。
使用wait()阻塞调用线程,直到另一个线程执行完成(或直到指定的时间过去)。
QThread还提供了静态、跨平台的睡眠函数:sleep()、msleep()和usleep()分别允许完整的秒、毫秒和微秒分辨率。这些函数在Qt 5.0中公开。
注意:一般情况下,wait()和睡眠函数应该是不必要的,因为Qt是一个事件驱动的框架。要代替wait(),考虑监听finished()信号。要代替睡眠函数,考虑使用QTimer。
静态函数currentThreadId()和currentThread()返回当前正在执行的线程的标识符。前者返回线程的特定于平台的ID;后者返回一个QThread指针。
要选择为您的线程分配的名称(例如在Linux上通过ps -L命令识别),可以在启动线程之前调用setObjectName()。如果您不调用setObjectName(),则为您的线程指定的名称将是您的线程对象的运行时类型的类名(例如,在Mandelbrot示例中,这是QThread子类的名称”RenderThread”)。请注意,这在Windows的发布版本中当前不可用。