Qt实战案例(39)——利用QProcess类实现启动进程的功能(进阶)

目录

    • 一、项目介绍
    • 二、项目基本配置
    • 三、UI界面设计
    • 四、主程序实现
      • 4.1 widget.h头文件
      • 4.2 widget.cpp源文件
    • 五、效果演示

一、项目介绍

利用QProcess类实现启动进程的功能进阶(以dos命令dir为例)。

二、项目基本配置

新建一个Qt案例,项目名称为“ProcessTest”,基类选择“QWidget”,点击选中创建UI界面复选框,完成项目创建。

三、UI界面设计

UI界面布局如下:
Qt实战案例(39)——利用QProcess类实现启动进程的功能(进阶)_第1张图片
界面中只创建了1个控件,其名称和类型如下:

序号 名称 类型 属性
pbn_process QPushButton text:启动一个进程

四、主程序实现

4.1 widget.h头文件

头文件中需要声明5个私有槽函数和1个私有对象:

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

4.2 widget.cpp源文件

在构造函数中添加信号和槽的关联:

    //连接相关信号和槽函数
    connect(&myProcess,&QProcess::readyRead,this,&Widget::showResult);
    connect(&myProcess,&QProcess::stateChanged,this,&Widget::showState);
    connect(&myProcess,&QProcess::errorOccurred,this,&Widget::showError);
    connect(&myProcess,SIGNAL(finished(int,QProcess::ExitStatus)),this,SLOT(showFinished(int,QProcess::ExitStatus)));

定义按钮点击槽函数,启动cmd命令行并实现相关命令:

//点击按钮启动相关进程
void Widget::on_pbn_process_clicked()
{
    QString program="cmd.exe";
    QStringList arguments;
    arguments << "/c dir&pause";//指定dir在cmd命令行中运行,指定运行完命令后暂停(dir显示指定路径上所有文件或目录的信息)
    myProcess.start(program,arguments);//指定程序名称和命令行参数
}

定义四个槽函数:

//显示进程读取结果
void Widget::showResult()
{
    QTextCodec *codec=QTextCodec::codecForLocale();//返回指向最适合此语言环境的编解码器的指针
    qDebug().noquote()<<"showResult:"<<codec->toUnicode(myProcess.readAll());//读取进程运行结果
}

//显示进程状态
void Widget::showState(QProcess::ProcessState state)
{

    qDebug()<<"showState:";
    if(state==QProcess::NotRunning){
        qDebug()<<"Not Running";
    }else if(state==QProcess::Starting){
        qDebug()<<"Starting";
    }else{
        qDebug()<<"Running";
    }
}

//如果发生错误,则显示相关错误信息
void Widget::showError()
{
    qDebug()<<"showError:"<<myProcess.errorString();
}

//显示结束代码和结束状态
void Widget::showFinished(int exitCode,QProcess::ExitStatus exitStatus)
{
    qDebug()<<"showFinished:"<<exitCode<<exitStatus;
}

五、效果演示

完整效果如下:
Qt实战案例(39)——利用QProcess类实现启动进程的功能(进阶)_第2张图片
而我们利用cmd打开命令行输出相关dir指令时显示如下:
Qt实战案例(39)——利用QProcess类实现启动进程的功能(进阶)_第3张图片
二者运行效果是相同的。

如果没有看懂的话,完整代码可以参考:
https://download.csdn.net/download/didi_ya/82734863


ok,以上便是本文的全部内容了,如果对你有所帮助,记得点个赞哟~

你可能感兴趣的:(Qt,qt,ui,开发语言,c++,dos)