2016-12-05 3 views
-1

Ich bin ein Neuling in mit QTQProcess Exit-Status und starten neue

Code:

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"); 
} 

So beginnt es Notizblock, wenn ich es zu schließen, calc gestartet wird, aber es hält unendlich öffnen.

Was ist falsch in meinem Code?

+0

Ihr 'connect' wird nicht funktionieren und Ihre Frage ist nicht klar ... bitte fügen Sie weitere Details hinzu. – HazemGomaa

Antwort

1

Da Sie den Steckplatz nicht trennen, wird der Moment, in dem "calc.exe" beendet wird, erneut gestartet.

I.e. Wenn Notepad.exe beendet wird, löst das Signal den test()-Steckplatz aus, der "calc.exe" ausführt. Wenn "calc.exec" beendet ist, passiert die gleiche Reihe von Ereignissen erneut.

+0

Dank ich habe diese Verbindung (proc, SIGNAL (abgeschlossen (int, QProcess :: ExitStatus)), diese, SLOT (test())); um die Funktion zu testen und es hat perfekt funktioniert. Nur wegen der Neugier benutze ich Signal und Slot falsch. Gibt es einen saubereren Weg, oder ist das in Ordnung? – User

+0

Klingt gut. Alternativ könnten Sie 'test()' einchecken, welches Programm beendet wurde, bevor calc.exe gestartet wird –

Verwandte Themen