Je pensais que j'allais obtenir la sortie d'un QProcess en utilisant le code suivant:Comment obtenir STDOUT à partir d'un processus Q?
// Start the process
process.start(tr("php-cgi www/test.php"),QIODevice::ReadWrite);
// Wait for it to start
if(!process.waitForStarted())
return 0;
// Continue reading the data until EOF reached
QByteArray data;
while(process.waitForReadyRead())
data.append(process.readAll());
// Output the data
qDebug(data.data());
qDebug("Done!");
Ce que je me attends est de voir la sortie du programme imprimé à la console de débogage, mais tout ce que je vois est:
Terminé!
Je sais que:
- Le programme démarre très bien, parce que le message à la fin est imprimé.
- Le programme exécute la sortie d'impression car l'exécution de la même commande dans le terminal produit une chaîne de texte longue comme prévu.
Qu'est-ce que je fais mal ici?
Il n'est pas utile d'inclure un exécutable avec une macro de traduction de langue tr(). Je doute aussi, que mettre l'exécutable et le paramètre en tant que premier argument fonctionnerait. Mieux: process.start ("php-cgi", QStringList() << "www/test.php", QIODevice :: ReadWrite); –
Si vous ne souhaitez pas bloquer votre application pendant que QProcess s'exécute, consultez la réponse à cette question: http://stackoverflow.com/questions/10098980/real-time-display-of-qprocess-output-in-a -textbrowser – parsley72
Jetez un oeil à la réponse acceptée à cette question similaire: http://stackoverflow.com/questions/2148185/run-linux-command-line-commands-from-qt4/2148360#2148360 – Fred