Ich dachte, ich den Ausgang von einem QProcess mit dem folgenden Code bekommen werde:Wie bekomme ich STDOUT von einem QProcess?
// 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!");
Was ich erwarte, ist die Ausgabe von dem Programm in der Debug-Konsole gedruckt zu sehen, aber alles, was ich sehe, ist:
Fertig!
Ich weiß, dass:
- Das Programm fein gestartet wird, weil die Nachricht am Ende gedruckt wird.
- Das Programm tut Druckausgabe, da das Ausführen des genau gleichen Befehls in dem Terminal eine lange Zeichenfolge wie erwartet erzeugt.
Was mache ich hier falsch?
Es gibt keinen Punkt einschließende ausführbare mit Sprachübersetzung Makro tr(). Ich bezweifle auch, dass das Ausführen von ausführbarem Programm und Parameter als erstes Argument funktionieren würde. Besser: process.start ("php-cgi", QStringList() << "www/test.php", QIODevice :: ReadWrite); –
Wenn Sie Ihre App nicht blockieren möchten, während QProcess ausgeführt wird, sehen Sie sich die Antwort auf diese Frage an: http://stackoverflow.com/questions/10098980/real-time-display-of-qprocess-output-in-a- -textbrowser – parsley72
Werfen Sie einen Blick auf die angenommene Antwort auf diese ähnliche Frage: http://stackoverflow.com/questions/2148185/run-linux-command-line-commands-from-qt4/2148360#2148360 – Fred