想在qt程序里调用一个持续运行的外部程序,如ping 127.0.0.1 -t这种,并在qt界面上持续显示这个程序的返回信息,用qprocess应该怎么实现?
#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();
}