【发布时间】:2011-07-27 04:53:33
【问题描述】:
假设我想要一个工作线程,它具有用于从主应用程序线程发出的信号的插槽。
该工作线程的“::run()”方法看起来如何?显然我需要某种循环,否则线程将立即终止。我希望它坚持下去,以便它可以处理传入的插槽。那个循环会是什么样子?相当于睡眠和泵信息的东西?泵如何?
我是否需要“MoveToThread()”所有将传递到线程槽的对象,以便在工作线程的上下文中完成槽的处理?
谢谢。
【问题讨论】:
标签: qt
假设我想要一个工作线程,它具有用于从主应用程序线程发出的信号的插槽。
该工作线程的“::run()”方法看起来如何?显然我需要某种循环,否则线程将立即终止。我希望它坚持下去,以便它可以处理传入的插槽。那个循环会是什么样子?相当于睡眠和泵信息的东西?泵如何?
我是否需要“MoveToThread()”所有将传递到线程槽的对象,以便在工作线程的上下文中完成槽的处理?
谢谢。
【问题讨论】:
标签: qt
做了更多的挖掘。 QThread::run 的默认实现调用“exec”,即消息循环。所以那里不需要额外的工作。在我的 QThread 的构造函数中,我添加了这个:
this->start();
QObject::moveToThread(this);
因此,我的线程在构造时就开始了,线程外针对线程槽的所有信号都在我的线程上下文中执行。
【讨论】: