0

我正在用 QT 编写桌面应用程序。在我的应用程序中,我正在按班级打开另一个应用程序

QProcess *myProcess;
myProcess->start(path + argStr);

我想知道进程是否关闭(也许有人手动)所以我开始一个新线程

void processExitDetector::run()
 {
       connect(myProcess,SIGNAL(finished(int)),this, SLOT (stop()));
 }


void processExitDetector::stop()
 {

 }

但是如果在函数 stop() 中有断点。我永远不会停在那里,即使我要停止这个过程。我在做什么?进程停止时获得指示的最佳方法是什么?

4

1 回答 1

1

我认为您可能对 SIGNAL/SLOT 的概念有点倒退。您无需等待线程中的 QProcess 退出即可建立连接。它是信号与插槽的连接,它应该告诉您何时完成。

您对QProcess.finished()有正确的想法,但无需单独启动线程来阻止waitForFinished。基本上你所做的连接是没有意义的。

  1. 创建流程
  2. 连接信号
  3. 启动流程
QProcess *myProcess;  
connect(myProcess, SIGNAL(finished(int)), this, SLOT(processFinished()));  
myProcess->start(path + argStr);

processFinished()只是您定义的 SLOT(或使用内置 SLOT),以便在您的流程完成时收到通知。

于 2012-07-15T05:53:53.153 回答