2016-12-05 20 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

'연결'이 작동하지 않고 질문이 분명하지 않습니다 ... 자세한 내용을 추가하십시오. – HazemGomaa

답변

1

슬롯을 연결 해제하지 않으므로 "calc.exe"종료 순간이 다시 시작됩니다.

e.e. notepad.exe가 완료되면 신호는 "calc.exe"를 실행하는 test() 슬롯을 트리거합니다. "calc.exec"가 끝나면 매우 동일한 일련의 이벤트가 다시 발생합니다.

+0

감사합니다.이 연결 끊김 (proc, SIGNAL (int, QProcess :: ExitStatus) 완료), SLOT (test())); 기능을 테스트하고 완벽하게 작동했습니다. 내가 신호와 슬롯을 잘못된 방식으로 사용하고 있다는 사실에 대한 호기심 때문입니다. 그것을 할 수있는 더 깨끗한 방법이 있습니까 아니면이 괜찮습니까? – User

+0

괜찮습니다. 또는 calc.exe를 실행하기 전에 어떤 프로그램이 종료되었는지'test()'를 체크 할 수있다. –