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);
}
편집 솔루션은, 당신이 그것을 필요로하는 경우 다음 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