qt接收shell指令碼的標準輸出
阿新 • • 發佈:2020-08-07
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)