2012-07-15 63 views
0

我在QT中编写桌面应用程序。 在我的申请,我由类openening另一个应用程序过程关闭时显示 - QT

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

我想获得指示过程是否关闭(也许有人manullay) ,所以我开始一个新的线程

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


void processExitDetector::stop() 
{ 

} 

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

+0

嗯。你刚刚更新了你的代码,并删除了'waitForFinished',它稍微改变了上下文。毕竟你没有这样做? – jdi 2012-07-15 05:58:33

回答

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()正是您所定义(或使用一个内置插槽)的插槽是当您的流程完成时通知您。