2016-12-05 13 views
-1

我在使用QTQProcess中退出狀態,並開始新的

代碼新手:

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(finished(int,QProcess :: ExitStatus)),this,SLOT(test()));測試功能,它工作完美。爲了好奇,我是否以錯誤的方式使用信號和插槽;有沒有更乾淨的方法來做到這一點,或者這是好嗎? – User

+0

聽起來沒問題。或者,你可以在啓動calc.exe之前檢查'test()'哪個程序已經結束 –