0

QTでデスクトップアプリケーションを書いています。私のアプリケーションでは、クラスごとに別のアプリケーションを開いています

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

プロセスが近いかどうか(おそらく誰かのmanullayによって)を示したいので、新しいスレッドを開始します

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 に答える