QProcess

QProcess类用于启动另一个外部应用程序,并可与之进行通信。该类的运行方式是异步的。QProcess类在外部进程拥有数据或完成时发送一个信号以通知相关的对象。

QProcess的使用模板如下:

class XXX : public XXXX
{
     Q_OBJECT
…
private slots:
     void errorHandler(QProcess::ProcessError);
     void catchOutput();
     void catchError();
     void stateMonitor(QProcess::ProcessState newState);
     void slotStarted();
     void slotFinished(int, QProcess::ExitStatus);
…
private:
     QProcess p;
…
};

XXX::XXX(…)
{
…
connect(&p, SIGNAL(started()), SLOT(slotStarted()));
connect(&p, SIGNAL(finished(int, QProcess::ExitStatus)), SLOT(slotFinished(int, QProcess::ExitStatus));
connect(&p, SIGNAL(error(QProcess::ProcessError)), SLOT(errorHandler (QProcess::ProcessError)));
connect(&p, SIGNAL(readyReadStandardError()), SLOT(catchError()));
connect(&p, SIGNAL(readyReadStandardOutput()), SLOT(catchOutput()));
…
}

XXX:: slotStarted()
{
   qDebug()<<”process has started”;
}

XXX:: slotFinished(int exitcode, QProcess::ExitStatus status)
{
if (exitStatus == QProcess::CrashExit) {
       …;
    } else if (exitCode != 0) {
        …;
    } else {
       …;
}
}

XXX:: errorHandler(QProcess::ProcessError error)
{
        if (error == QProcess::FailedToStart) {
                  …
        }
       else if( error == QProcess:: Crashed )
       {
             …
       }
       else if( error == QProcess:: Timedout )
       {
          …
       }
       else if( error == QProcess:: WriteError )
      {
          …
       }
      else if( error == QProcess::ReadError )
      {
        …
      }
      else if( error == QProcess:: UnknownError )
      {
         …
       }
}

XXX:: catchError()
{
      QByteArray newData = process.readAllStandardError();
     …

}

XXX::catchOutput()
{
      QByteArray newData = process.readAllStandardOutput();
   …
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值