ho pensato che stavo per ottenere l'uscita da un QProcess utilizzando il seguente codice:Come ottenere STDOUT da un 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!");
Quello che mi aspetto è quello di vedere l'uscita dal programma stampato per la console di debug, ma tutto quello che vedo è:
Fatto!
So che:
- Il programma viene avviato bene, perché il messaggio alla fine viene stampato.
- Il programma fa l'output di stampa perché l'esecuzione dello stesso esatto comando nel terminale produce una lunga stringa di testo come previsto.
Cosa sto facendo di sbagliato qui?
Non è possibile racchiudere un file eseguibile con la macro di traduzione tr(). Dubito anche che il mettere parametro eseguibile e parametro come prima cosa funzionerebbe. Meglio: process.start ("php-cgi", QStringList() << "www/test.php", QIODevice :: ReadWrite); –
Se non vuoi bloccare la tua app mentre QProcess gira guarda la risposta a questa domanda: http://stackoverflow.com/questions/10098980/real-time-display-of-qprocess-output-in-a -textbrowser – parsley72
Dai un'occhiata alla risposta accettata a questa domanda simile: http://stackoverflow.com/questions/2148185/run-linux-command-line-commands-from-qt4/2148360#2148360 – Fred