2016-12-05 30 views
-1

新しい開始は私がQTQProcessの終了ステータスと1

コードを使用して初心者だ:

void MainWindow::test() 
{ 
    ui->label->setText("it worked !"); 
    proc->start("c:/windows/system32/calc.exe"); 
} 

void MainWindow::on_pushButton_clicked() 
{ 
    proc = new QProcess(); 
    connect(proc,SIGNAL(finished(int,QProcess::ExitStatus)),this,SLOT(test())); 
    proc->start("c:/windows/system32/notepad.exe"); 
} 

だから、それは私がそれを閉じると、Calcは開始されているが、それは無限に開く続けてメモ帳を起動します。

私のコードで何が間違っていますか?

+0

あなたの 'connect'はうまくいかず、あなたの質問がはっきりしない...詳細を追加してください。 – HazemGomaa

答えて

1

スロットを切断していないため、「calc.exe」の終了時にもう一度起動されます。

I.e. notepad.exeが終了すると、信号は "calc.exe"を実行するtest()スロットをトリガします。 "calc.exec"が終了すると、非常に同じ一連のイベントが再び発生します。

+0

ありがとう私はこの切断(proc、SIGNAL(終了した(int、QProcess :: ExitStatus))、this、SLOT(test()))を追加しました。機能をテストするために、それは完璧に働いた。好奇心のために私は間違った方法でシグナルとスロットを使用しています。それを行うためのクリーンな方法はありますか? – User

+0

いいですね。あるいは、calc.exeを起動する前に、プログラムが終了した 'test()'をチェックインすることもできます –

関連する問題