我以爲我會使用下面的代碼從一個QProcess中的輸出:如何從QProcess獲得STDOUT?
// 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!");
什麼我期待就是看從印刷到調試控制檯程序的輸出,但我看到的是:
完成!
我知道:
- 程序啓動罰款,因爲印在最後的消息。
- 確實打印輸出,因爲運行在終端中的完全相同的命令產生文本的長字符串按預期的程序。
我在做什麼錯在這裏?
是毫無意義的封閉可執行文件語言翻譯宏TR()。我也懷疑,把可執行文件和參數作爲第一個參數是可行的。更好:process.start(「php-cgi」,QStringList()<<「www/test.php」,QIODevice :: ReadWrite); – 2013-02-23 20:41:44
如果您不想在QProcess運行時阻止您的應用程序,請查看此問題的答案: http://stackoverflow.com/questions/10098980/real-time-display-of-qprocess-output-in-a -textbrowser – parsley72 2014-01-25 06:14:45
看一看接受的答案,這類似的問題:http://stackoverflow.com/questions/2148185/run-linux-command-line-commands-from-qt4/2148360#2148360 – Fred 2010-10-04 14:22:00