2016-12-05 3 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"); 
} 

Так начинается блокнота, когда я закрываю его, известково запускается, но она продолжает открывать бесконечно.

Что не так в моем коде?

+0

ваш 'connect' не будет работать, и ваш вопрос не ясен ... просьба добавить более подробную информацию. – HazemGomaa

ответ

1

Поскольку вы не отсоединяете слот, момент выхода «calc.exe» будет запущен снова.

I.e. когда notepad.exe заканчивается, сигнал запускает слот test(), который запускает «calc.exe». Когда закончится «calc.exec», повторится одна и та же серия событий.

+0

Спасибо, я добавил это отключение (proc, SIGNAL (завершено (int, QProcess :: ExitStatus)), это, SLOT (test())); для проверки функции, и она работала идеально. Просто для любопытства я использую сигнал и слот неправильно; есть ли более чистый способ сделать это или это прекрасно? – User

+0

Звучит нормально. В качестве альтернативы вы можете проверить 'test()', какая программа закончилась до запуска calc.exe –

Смежные вопросы