2012-07-15 80 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()正是您所定義(或使用一個內置插槽)的插槽是當您的流程完成時通知您。