1. 程式人生 > 實用技巧 >qt接收shell指令碼的標準輸出

qt接收shell指令碼的標準輸出

qt接收shell指令碼的標準輸出(qt接收shell的值)

注意: qt接收的是shell指令碼的標準輸出,不是shell指令碼的返回值。

直接上程式碼,以上程式碼我只擷取部分程式碼,為了說明問題。因為我想實現的是自動檢測U盤,因為已經實現了u盤的熱插拔,所以現在的主要問題就是,利用qt呼叫shell指令碼,shell指令碼更具不同的輸出,確認如,是否檢測到u盤,u盤中是否有升級檔案,是否開始升級,是否升級完成等等內容,我所說的這些我沒有著手去實現它,現在建立在這個基礎上,主要去著手實現它的標準輸出是否正確的傳送給了QT。

qt程式碼

war_limit.h //重點程式碼我會標出來

#ifndef WAR_LIMIT_H
#define WAR_LIMIT_H

#include <QWidget>
#include <QStandardItemModel>
#include "pub_info.h"
#include <QProcess>

namespace Ui {
class War_Limit;
}

class War_Limit : public QWidget
{
    Q_OBJECT

public:
    explicit War_Limit(QWidget *parent = nullptr);
    ~War_Limit();
    void updata_widget_data(SHOW s);
    void ant_state(int value);
    void show_limit_info(int value);
    void show_waring_info(int value);
    void updata_get_sn_info(QString t);

private slots:
    void on_pushButton_updata_clicked();

private:
    Ui::War_Limit *ui;
    QStandardItemModel *item;
    void init_tableview();
signals:
    void returnPressed();
};

#endif // WAR_LIMIT_H

war_limit.cpp

War_Limit::War_Limit(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::War_Limit)
{
    ui->setupUi(this);
    connect(ui->lineEdit,SIGNAL(returnPressed()),this,SLOT(on_pushButton_updata_clicked()));
}

War_Limit::~War_Limit()
{
    delete ui;
}
/*2020/07/28 09:25,@houwenzhi:檢查軟體更新*/
void War_Limit::on_pushButton_updata_clicked()
{
     QProcess process;
     process.start(ui->lineEdit->text());
     process.waitForFinished();
     QByteArray output = process.readAllStandardOutput();

     QString str_output = output;
     ui->textBrowser->setText(str_output);
     qDebug()<<output;
}

shell指令碼

test.sh

 1 ##########################################################################                              
  2 # File Name: test.sh
  3 # Author: houwenzhi
  4 # mail: [email protected]
  5 # Created Time: 2020年08月06日 星期四 13時21分38秒
  6 #########################################################################
  7 #!/bin/bash
  8
  9 echo "hello"
10 echo 9
11 echo 8

執行結果



debug的

結果:

Starting /home/hou/work/app/antenna-gitee/Antenna-Control-6ul/antenna/build-ACU-Desktop_Qt_5_7_0_GCC_64bit-Debug/ACU...
serial success
"hello\n9\n8\n"


來自為知筆記(Wiz)