相关疑难解决方法(0)

如何从QProcess获取STDOUT?

我以为我将使用以下代码从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 stdout process qprocess

24
推荐指数
2
解决办法
3万
查看次数

在textBrowser中实时显示QProcess输出

我是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)

qt qprocess qt-creator

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

qprocess ×2

qt ×2

process ×1

qt-creator ×1

stdout ×1