私は、ブレンダーのレンダリングジョブマネージャーを作っています。私は、レンダリングジョブのキューを構築し、次に「開始」をクリックするクラスを持っていて、ループで一度に1つずつレンダリングを開始します。私の問題は、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