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