我以为我将使用以下代码从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!");
Run Code Online (Sandbox Code Playgroud)
我期待的是看到程序的输出打印到调试控制台,但我看到的只有:
完成!
我知道:
我在这做错了什么?
我是qt开发的新手,我想将QProcess的输出实时传输到textBrowser.我开始执行一个简单的echo命令,但程序的输出没有显示出来.我究竟做错了什么????
QProcess p;
p.start("echo hye");
QByteArray byteArray = p.readAllStandardOutput();
QStringList strLines = QString(byteArray).split("\n");
QString line= p.readAllStandardOutput();
if(p.state()==QProcess::NotRunning)
ui->textBrowser->append("not running");
foreach (QString line, strLines){
ui->textBrowser->append(line);}
Run Code Online (Sandbox Code Playgroud)
PS我在linux机器上.
编辑:我仍然无法在textBrowser中获取输出.
我更改了Qprocess参数并尝试了waitForStarted()和waitForReadyRead(),以便进程及时启动并且结果可用.
我添加了waitForFinished(),以便当进程超出范围时进程不会终止.
QProcess p;
p.start("echo", QStringList() << "hye");
p.waitForStarted();
QByteArray byteArray = p.readAllStandardOutput();
QStringList strLines = QString(byteArray).split("\n");
QString line= p.readAllStandardOutput();
if(p.state()==QProcess::NotRunning)
ui->textBrowser->append("not running");
ui->textBrowser->append(line);
p.waitForFinished();
Run Code Online (Sandbox Code Playgroud)