qt调用外部程序并持续返回信息的问题

想在qt程序里调用一个持续运行的外部程序,如ping 127.0.0.1 -t这种,并在qt界面上持续显示这个程序的返回信息,用qprocess应该怎么实现?

img


#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QProcess>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    ui->lineEdit->setFocus();


    cmd = new QProcess(this);
    connect(cmd , &QProcess::readyReadStandardOutput , this , [=](){
        ui->textEdit->setTextColor(Qt::blue);
        ui->textEdit->append(QString::fromLocal8Bit(cmd->readAllStandardOutput()));
    });
    connect(cmd , &QProcess::readyReadStandardError , this , [=]() {
        ui->textEdit->setTextColor(Qt::red);
        ui->textEdit->append(QString::fromLocal8Bit(cmd->readAllStandardError()));
    });

    cmd->start("cmd");
    cmd->waitForStarted();
}

MainWindow::~MainWindow()
{
    if(nullptr != cmd)
    {
        cmd->close();
        cmd->waitForFinished();
    }
    delete ui;
}

void MainWindow::keyPressEvent(QKeyEvent *e)
{
    if(e->matches(QKeySequence::InsertParagraphSeparator))
    {
        on_pushButton_clicked();
    }
}

void MainWindow::on_pushButton_clicked()
{    
    cmd->write(ui->lineEdit->text().toUtf8() + "\n");
    ui->lineEdit->clear();
}