【问题标题】:On QCoreApplication and QProcess关于 QCoreApplication 和 QProcess
【发布时间】:2010-09-21 01:07:44
【问题描述】:

我正在编写应该通过 Qprocess 创建外部进程的 QCoreApplication。

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

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

【问题讨论】:

  • 我希望现在更容易理解 :-)
  • 如果您声明希望在主进程的事件循环开始之前确认外部进程,可能会更清楚。

标签: c++ linux qt


【解决方案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 将在事件循环处理启动事件时启动。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-29
    • 1970-01-01
    • 2017-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-27
    相关资源
    最近更新 更多