qianfl 2021-11-03 10:56 采纳率: 0%
浏览 17

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

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

  • 写回答

1条回答 默认 最新

  • 木风可可 2022-06-21 11:35
    关注

    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();
    }
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 11月3日