我正在QT编写桌面应用程序。 在我的应用程序中,我正在通过类
打开另一个应用程序QProcess *myProcess;
myProcess->start(path + argStr);
我想知道这个过程是否接近(可能是某人手铐) 所以我开始一个新的线程
void processExitDetector::run()
{
connect(myProcess,SIGNAL(finished(int)),this, SLOT (stop()));
}
void processExitDetector::stop()
{
}
但是如果在函数stop()中有breakpoing。我永远不会停在那里,即使我正在停止这个过程。 我在做什么?什么是过程停止时获得指示的最佳方法?
答案 0 :(得分:1)
我认为你可能有一些倒退的SIGNAL / SLOT概念。您无需等待线程中的QProcess退出即可建立连接。它是信号与插槽的连接,应该在完成时告诉你。
您对QProcess.finished()有正确的想法,但没有必要仅在waitForFinished
上启动线程。基本上你正在建立的联系毫无意义。
QProcess *myProcess;
connect(myProcess, SIGNAL(finished(int)), this, SLOT(processFinished()));
myProcess->start(path + argStr);
processFinished()
只是您定义(或使用内置SLOT)的SLOT,以便在您的流程完成时收到通知。