いくつかの外部プログラムの助けを借りて画像を最適化したいと考えています。プログラムは 1 つずつ実行する必要があり、一部は最後のプログラムの出力に依存し、一部は画像の特性に依存します。
シグナルを使用できることはわかっていますが、ここではあまり役に立ちません。外部プログラムごとに数十の関数とシグナルを使用する必要があり、プログラムが呼び出される位置によっては複数回使用するものもあります。チェーンで。それらを1つずつ実行する方がはるかに簡単です。しかし、そうすると、すべてのプロセスが完了するまで、ステータスメッセージが表示されなくても、GUIがすぐにフリーズします。他に何ができますか?
ui->status->setText("Do something with program 1");
QProcess *proc1 = new QProcess;
proc1->setReadChannelMode(QProcess::SeparateChannels);
proc1->start("program 1 -args", QIODevice::ReadWrite);
while(!proc1->waitForFinished(10))
;
ui->status->setText("Do something with program 2");
QProcess *proc2 = new QProcess;
proc2->setReadChannelMode(QProcess::SeparateChannels);
proc2->start("program 2 -args", QIODevice::ReadWrite);
while(!proc2->waitForFinished(10))
;