进程

来源:互联网 发布:淘宝客优惠券网站 编辑:程序博客网 时间:2024/05/18 03:08

widget.h

#include <QMainWindow>#include <QProcess>namespace Ui {    class MainWindow;}class MainWindow : public QMainWindow{    Q_OBJECTpublic:    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;}