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

一、项目介绍

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

二、项目基本配置

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

三、UI界面设计

UI界面布局如下:
在这里插入图片描述
界面中只创建了1个控件,其名称和类型如下:

序号名称类型属性
pbn_processQPushButtontext:启动一个进程

四、主程序实现

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;
}

五、效果演示

完整效果如下:
在这里插入图片描述
而我们利用cmd打开命令行输出相关dir指令时显示如下:
在这里插入图片描述
二者运行效果是相同的。

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


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wendy_ya

您的鼓励将是我创作的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值