2008-11-06 13 views
0

Je suis sur le chemin d'écriture d'une QCoreApplication supposée créer un processus externe via Qprocess.Sur QCoreApplication et QProcess

Je viens de remarquer que même si le waitForStarted() est appelé et l'état du processus est Running avant que le gestionnaire d'événements est en cours d'exécution, le processus externe ne démarre pas jusqu'à ce que la méthode exec() est invoquée sur le QCoreApplication. Cela dit, est-il possible de reporter l'exécution d'une routine au début de la gestion des événements (dans lequel instancier un processus Q), ou la seule façon viable est de créer un QTimer one shot?

+0

La question est ambiguë – PiedPiper

+0

J'espère que c'est plus compréhensible maintenant :-) –

+0

Il pourrait être plus clair si vous déclarez que vous voulez que le processus externe soit confirmé avant que la boucle d'événement commence pour le processus principal. –

Répondre

1

Après une courte recherche, il sort la méthode QCoreApplication :: processEvents() qui traite tous les événements en attente pour le thread appelant. Dans le code suivant

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

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

    app.processEvents(); 

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

    return app.exec(); 
} 

telle méthode est nécessaire pour la section is-the-process-really-running de le laisser trouver le processus abc et en cours d'exécution. Autrement abc sera démarré lorsque la boucle d'événements traite l'événement de démarrage.