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: houwenzhi@163.com
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"