QProcessで使用されるいくつかの引数を渡すというスロットがあります。 私はこの引数のいくつかを使って外部プログラムを実行します。 問題は、前のプロセスが次のプロセスを開始するまで待って、これらのプロセスのキューを作成したいということです。QProcessでキューを使用するにはどうすればよいですか?
あなたは、最も簡単な方法は何と思いますか?
ここに私の方法/スロット:ここ
void FirstCase::CallApp(QString text, QString pathAndFileName)
{
QString command = QString("App1.exe %1 -Z %2").arg(pathAndFileName).arg(message);
QProcess* process = new QProcess(this);
process->start(command);
}
EDITソリューションあなたはそれが必要な場合は、:QStringListのアイデアに続い
を、私のCallApp方法は、同じようにQStringListにコマンドを追加します。
list << command;
次に、Execute()を呼び出します。
void FirstCase::Execute()
{
if(!list_.isEmpty()&&!executing_)
{
QProcess* p = new QProcess(this);
QString c = list_.takeFirst();
p->start(c);
executing_=TRUE;
connect(p, SIGNAL(finished(int)),this,SLOT(ExecFinished()));
}
}
void FirstCase::ExecFinished()
{
executing__=FALSE;
Execute();
}
start()のQStringListオーバーロードを区切った引数で使用することを強くお勧めします。それ以外の場合は、すぐに引用の問題にぶつかります(たとえば、実行するプログラムにそのパスにスペースがある場合など)。 QStringList()バージョンでは自動的に引用が行われます。 –
完成した信号を間違って使用しています。下記の私の答えをご覧ください。 – ismail