我正在开发 Qt 应用程序。在那里,我想让工作线程在后台执行一些活动,并且我希望主线程来控制它,如果它因某种原因死亡,则重新启动工作线程。我已经看到线程发出的完成()信号,所以我想我可以将插槽连接到它。
这是推荐的方式吗?如果没有,我怎么能做到这一点?
如果我使用 finished() 信号,我如何知道正常终止和错误之间的区别?
谢谢并恭祝安康
我正在开发 Qt 应用程序。在那里,我想让工作线程在后台执行一些活动,并且我希望主线程来控制它,如果它因某种原因死亡,则重新启动工作线程。我已经看到线程发出的完成()信号,所以我想我可以将插槽连接到它。
这是推荐的方式吗?如果没有,我怎么能做到这一点?
如果我使用 finished() 信号,我如何知道正常终止和错误之间的区别?
谢谢并恭祝安康
如果您想知道您是否有错误或者您是否完成了该过程,只需创建两个信号,而不是一个,和两个插槽,而不是一个。
在Qt 文档中,您有一个示例,其中包含处理结果的连接:
connect(workerThread, &WorkerThread::resultReady, this, &MyObject::handleResults);
您在这里将信号resultReady
与处理结果的任何方法连接起来。您创建另一个与此完全相同的,但带有错误信号和错误处理程序。
connect(workerThread, &WorkerThread::errorThrown, this, &MyObject::handleErrors);
当然,另一种选择是简单地将参数与您的信号/插槽一起传递。这是一个函数调用,如果您将 someenum
与 status 或 some放在一起,就可以了int
。