c++ - 我如何使用 QProcess 的队列?

标签 c++ qt 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();
}

最佳答案

您可以使用 QString 队列来排队您的命令并存储它们。然后,从队列的顶部开始,启动一个新进程并将其 finished() 信号连接到一个插槽。当该进程完成时,如果队列不为空则启动一个新进程等等。

关于c++ - 我如何使用 QProcess 的队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4713140/

相关文章:

c++ - 如何检测 ssh 连接(通过 QProcess)何时完成?

c++ - 为什么#pragma optimize ("",关闭)

c# - 在 Windows 上将数据插入文件

c++ - keypressevent()中的qt多个键

c++ - 如何在代码中使用 IloExprArray?

c++ - Qt 信号和槽。 slider 和进度条

c++ - 代理和 fetchMore()/canFetchMore() 背后的 Qt 模型

c++ - QT MySql 数据库检查登录名和密码以登录

c++ - 如何使用Qt检查路径中是否存在程序?

python - 从用作进度监视器的 QDialog 中启动 QProcess