Comment obtenir la sortie standard d'un QProcess?

Je pensais que j'allais obtenir la sortie d'un QProcess en utilisant le code suivant:

//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 j'attends c'est de voir la sortie du programme imprimé de la console de débogage, mais tout ce que je vois est:

Fait!

Je sais que:

  • Le programme est démarré bien, parce que le message de fin est imprimé.
  • Le programme ne de sortie d'impression, car l'exécution de la exactement la même commande dans le terminal, produit d'une longue chaîne de texte comme prévu.

Ce que je fais mal ici?

  • Jetez un oeil à la accepté de répondre à cette question similaire : stackoverflow.com/questions/2148185/...
  • La Solution de cette question aussi du bon sens, mais il n'a pas à maintenir l'ordre des messages
  • Il n'y a pas de point d'enfermer exécutable avec la traduction en langue macro tr(). Je doute aussi, que la mise exécutable et le paramètre comme premier argument de travail. Mieux: processus.début("php-cgi", QStringList()<<"www/test.php",QIODevice::ReadWrite);
  • Si vous ne voulez pas bloquer votre application tout en QProcess pistes de regarder la réponse à cette question: stackoverflow.com/questions/10098980/...
  • QProcess est Agréable. Qt est ridiculement beau!
InformationsquelleAutor Nathan Osman | 2010-10-04