我正在写一个QCoreApplication,它应该通过Qprocess创建一个外部进程。
我刚刚注意到,即使在事件处理程序执行之前调用了waitForStarted()并且流程状态为Running,外部流程也不会启动,直到在QCoreApplication上调用了exec()方法。
也就是说,是否可以将例程的执行推迟到事件处理开始(在事件处理开始中实例化QProcess),或者唯一可行的方法是创建一个一次性QTimer?

最佳答案

经过短暂的调查之后,它出现了QCoreApplication::processEvents()方法,该方法处理调用线程的所有挂起事件。在下面的代码中

int main(int argc, char *argv[])
{
    QCoreApplication app(argc, argv);

    QProcess abc(....);
    abc.start(...);

    app.processEvents();

    //////////////////////////////////////////////////////
    // is the process really running ? //
    //////////////////////////////////////////////////////

    return  app.exec();
}

该方法对于is-the-process-really-running部分是必需的,以便它能够找到abc流程的启动和运行。否则,当事件循环处理启动事件时,abc将启动。

10-08 07:53