假设我想要一个工作线程,其中包含从主应用程序线程中发出信号的插槽。
该工作线程的“:: run()”方法如何显示?显然我需要某种循环或线程将立即终止。我希望它坚持下去,以便它可以处理传入的插槽。那个循环怎么样?相当于睡眠和泵消息的东西?泵怎么样?
我是否需要“MoveToThread()”所有传递给线程插槽的对象,以便在工作线程的上下文中完成插槽的处理?
谢谢。
答案 0 :(得分:1)
进行了更多挖掘。 QThread :: run的默认实现调用“exec”,这是消息循环。所以不需要额外的工作。在我的QThread的构造函数中,我添加了这个:
this->start();
QObject::moveToThread(this);
结果,我的线程在构造时开始,并且线程外部的所有信号都针对线程插槽在我的线程的上下文中执行。