想在qt程序里调用一个持续运行的外部程序,如ping 127.0.0.1 -t这种,并在qt界面上持续显示这个程序的返回信息,用qprocess应该怎么实现?
1条回答 默认 最新
木风可可 2022-06-21 11:35关注
#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(); }解决 无用评论 打赏 举报