进程

widget.h

#include <QMainWindow>
#include <QProcess>

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private slots:
    void on_pushButton_clicked();
    void showResult();
    void showState(QProcess::ProcessState);
    void showError();
    void showFinished(int, QProcess::ExitStatus);

private:
    Ui::MainWindow *ui;
    QProcess myProcess;
};

widget.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    connect(&myProcess, SIGNAL(readyRead()), this, SLOT(showResult()));
    connect(&myProcess, SIGNAL(stateChanged(QProcess::ProcessState)),
            this, SLOT(showState(QProcess::ProcessState)));
    connect(&myProcess, SIGNAL(error(QProcess::ProcessError)), this, SLOT(showError()));
    connect(&myProcess, SIGNAL(finished(int,QProcess::ExitStatus)),
            this, SLOT(showFinished(int, QProcess::ExitStatus)));
}

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

// 启动进程按钮
void MainWindow::on_pushButton_clicked()
{
//    QString program = "cmd.exe";
//    QStringList arguments;
//    arguments << "/c dir&pause";
//    myProcess.start(program, arguments);

    QString program = "mac.bat";
    QStringList arguments;
    arguments << "";
    myProcess.start(program, arguments);

    int ret = system("net localgroup");

    qDebug() << ret;

}

// 显示运行结果
void MainWindow::showResult()
{
    qDebug() << "showResult: " << endl << QString(myProcess.readAll()).toStdString().c_str();
}

// 显示状态变化
void MainWindow::showState(QProcess::ProcessState state)
{
    qDebug() << "showState: ";
    if (state == QProcess::NotRunning) {
        qDebug() << "Not Running";
    } else if (state == QProcess::Starting) {
        qDebug() << "Starting";
    }  else {
        qDebug() << "Running";
    }
}

// 显示错误
void MainWindow::showError()
{
    qDebug() << "showError: " << endl << myProcess.errorString();
}

// 显示结束信息
void MainWindow::showFinished(int exitCode, QProcess::ExitStatus exitStatus)
{
    qDebug() << "showFinished: " << endl << exitCode << exitStatus;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值