我正在尝试使用proper way中的QThread。
出于性能原因,我想保持线程运行并将工作块推送到它。
线程开始时会发出 started 信号,但是当QObject移动到线程时会发出什么信号,以便它可以开始在新线程中执行工作?
答案 0 :(得分:2)
没有这样的信号。调用moveToThread
后,您可以使用QMetaObject::invokeMethod
在不同的线程中调用函数(假设线程已经启动)。
如何在我上面链接的文档中使用它有一个很好的例子:
QMetaObject::invokeMethod(thread, "quit",
Qt::QueuedConnection);
您还可以为要移动到另一个线程的类创建一个函数,并在此函数中调用moveToThread
并发出自己的信号:
void MyClass::myMoveToThreadFunction(QThread *thread)
{
moveToThread(thread);
emit threadChanged();
}