Ich mache einen Render-Job-Manager für den Mixer. Ich habe eine Klasse, die eine Reihe von Renderjobs aufbaut und dann auf Start klickt und sie nacheinander mit einer Schleife rendert. Mein Problem ist, dass die waitForFinished()
Methode mein ganzes Programm hält. Aber ich habe gelesen, dass Sie QThread
mit QProcess
nicht verwenden sollten.Ist dies ein angemessener Zeitpunkt, QThread mit QProcess zu verwenden?
So funktioniert die Schleife.
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);
Kann ich einen separaten Thread verwenden, um QProcess zu starten, und was wäre der beste Weg, dies zu tun? Ich habe gelesen, dass Sie eine Zusammenfassung von QThread machen oder Signale und Slots verwenden, aber es ist so verwirrend, besonders wenn ich Argumente an den Prozess übergeben muss.
Vielen Dank.
Edit: Ich möchte hinzufügen, dass der Prozess vor dem Ausführen eines neuen Prozesses abgeschlossen werden muss. Es muss in Ordnung gehen. Deshalb denke ich, dass ich den Prozess in einem eigenen Thread ausführen muss.
Warum hören Sie nicht einfach das 'finished()' Signal? – MrEricSir
@MrEricSir Sie sind richtig .... Hier ist ein Artikel http://www.qtcentre.org/threads/26067-Article-How-to-QProcess-in-QThread – Naidu
Ich bin verwirrt. Der Artikel zeigt, wie man einen Prozess in einem neuen Thread erstellt, aber die Kommentatoren sagen, das ist schlecht. Welches ist es? – LetTheWritersWrite