【发布时间】:2012-04-11 02:13:32
【问题描述】:
我是 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);}
附:我在一台 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();
【问题讨论】:
标签: qt qt-creator qprocess