0

Qprocessを介して外部プロセスを作成することになっているQCoreApplicationを作成する道を進んでいます。

waitForStarted()が呼び出され、プロセスの状態がRunningイベント ハンドラーの実行前であっても、外部プロセスはQCoreApplication でメソッドが呼び出されるまで開始されないことに気付きました。exec()

そうは言っても、ルーチンの実行をイベント処理の開始 (QProcess をインスタンス化する) まで延期することは可能ですか、または実行可能な唯一の方法はワンショット QTimer を作成することですか?

4

1 に答える 1

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();
}

このようなメソッドは、セクションがabcプロセスを起動して実行してis-the-process-really-runningいることを検出できるようにするために必要です。それ以外の場合、イベントループが開始イベントを処理するときにabcが開始されます。

于 2008-11-06T13:31:56.777 に答える