나는 블렌더를위한 렌더 작업 관리자를 만들고 있습니다. 렌더링 작업 대기열을 작성한 클래스가 있고 시작을 클릭하면 루프가있는 한 번에 하나씩 렌더링이 시작됩니다. 내 문제는 waitForFinished()
메서드가 내 전체 프로그램을 유지한다는 것입니다. 그러나 나는 QThread
을 QProcess
과 함께 사용해서는 안된다는 것을 읽었습니다.QThread를 QProcess와 함께 사용할 적절한시기입니까?
루프가 작동하는 방식입니다.
do{
if(myProcess->state() == QProcess::NotRunning) {
myProcess->setProgram(blenderPath);
myProcess->setArguments(arguments);
myProcess->start();
myProcess->waitForFinished(-1);
//Get rid of current rendering job to prepare for the next job
renderQueueList.pop_front();
}
}while(renderQueueList.empty() != true);
나는 QProcess를 시작하기 위해 별도의 스레드를 사용할 수 무엇은이 작업을 수행하는 가장 좋은 방법이 있을까요? 나는 당신이 QThread의 추상을 만들거나 신호와 슬롯을 사용한다는 것을 읽었지만 너무 혼란 스럽다. 특별히 프로세스에 인수를 전달할 필요가있을 때.
감사합니다.
편집 : 새 프로세스를 실행하기 전에 프로세스가 완료되어야한다고 추가하고 싶습니다. 순서대로 가야합니다. 그렇기 때문에 프로세스를 자체 스레드로 실행해야한다고 생각합니다.
그냥 'finished()'신호를 듣지 않는 이유는 무엇입니까? – MrEricSir
@MrEricSir 맞습니다 .... 여기에 기사가 있습니다 http://www.qtcentre.org/threads/26067-Article-How-to-QProcess-in-QThread – Naidu
저는 혼란 스럽습니다. 기사에서는 새 스레드에서 프로세스를 만드는 방법을 보여 주지만 의견 작성자는 이것이 잘못되었다고 말하고 있습니다. 무엇 이니? – LetTheWritersWrite