在QCoreApplication和QProcess上

时间:2008-11-06 09:09:03

标签: c++ linux qt

我正在编写一个QCoreApplication的路径,该QCoreApplication应该通过Qprocess创建一个外部进程。

我刚刚注意到,即使在执行事件处理程序之前调用waitForStarted()并且进程状态为Running,外部进程也不会启动在QCoreApplication上调用exec()方法。

那就是说,是否可以将例程的执行推迟到事件处理开始(实例化QProcess),或者唯一可行的方法是创建一次性QTimer?

1 个答案:

答案 0 :(得分:1)

经过短暂的调查后,它出现了方法 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