QT界面:执行系统命令并显示

QProcess类

QProcess类用于启动外部程序并与它们通信。
需要运行进程时将要运行的程序的名称和命令行参数作为参数传递给 start()。
参数作为 QStringList 中的单个字符串提供。
或者将程序设置为使用 setProgram() 和 setArguments() 运行,然后调用 start() 或 open()。

示例

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QLineEdit>
#include <QPushButton>
#include <QPlainTextEdit>
#include <QProcess>
#include <QLabel>
#include <QDebug>
#include<QTextCodec>
namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;


private:
QLineEdit *comm; //dos命令输入框
QPlainTextEdit *outEdit; //命令执行反馈框
QPushButton *btClick; //执行按钮
QProcess *process; //QProcess
QString output; //接收反馈信息
QLabel *label;
private slots:
void clickExecution(); //点击按钮事件
void readOutput(); //QProcess事件

};

#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //实例命令输入对话框
    comm = new QLineEdit(this);
    comm->setText("ipconfig");
    comm->setGeometry(QRect(20,20,260,25));
    //实例执行按钮
    btClick = new QPushButton(this);
    btClick->setText("执行");
    btClick->setGeometry(QRect(290,20,80,25));
    connect(btClick,SIGNAL(clicked()),this,SLOT(clickExecution()));
    //实例输出对话框
    outEdit = new QPlainTextEdit(this);
    outEdit->setGeometry(QRect(20,60,350,200));
    //实例QProcess
    process = new QProcess;
    connect(process, SIGNAL(readyRead()), this, SLOT(readOutput()));
    //dos命令查阅
    label = new QLabel(this);
    label->setGeometry(QRect(30,265,200,25));
    label->setText(tr("<a href=\"http://www.baidu.com/s?wd=dos命令大全\">命令DOS查阅</a>"));
    //开启超链接
    label->setOpenExternalLinks(true);
}

MainWindow::~MainWindow()
{
    delete ui;
}

//执行DOS命令
void MainWindow::clickExecution()
{
    //定义变量接收dos命令
    QString info = comm->text();
    //执行命令
    process->start(info);
    //绑定反馈值
    outEdit->setPlainText(output);
}


//QProcess 事件
void MainWindow::readOutput()
{
    QByteArray qba = process->readAllStandardOutput();
     QTextCodec* pTextCodec = QTextCodec::codecForName("System");
     QString str = pTextCodec->toUnicode(qba);
     outEdit->setPlainText(str);
     qDebug() << "output:\n" <<str;
}

在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值