qt中如何启动其余应用程序(若是不成功,还有许多缘由即QProcess::ProcessError可供分析)

   类 QDesktopServices 提供的方法 访问 经常使用的桌面 服务 , 如 浏览 器 、 播放器、 电子邮件客户端 、 咱们 使用 QDesktopServices :: openUrl(url) ,能够根据指定的url 打开Web 浏览 器 , 并返回 结果,若是 成功返回true ,不然 返回false。相应的能够打开文件(夹),可执行程序等!html

    若是想要启动其余应用程序使用QProcess, 当发生错误时,能够根据 指定 的 错误 描述 所发生 的错误类型 。this

 

描述:在界面启动后,可经过点击按钮启动一个外部指定的程序!url

myWidget::myWidget(QWidget *parent) :
 QWidget(parent)
{
  QPushButton *push_button  = new QPushButton(this);
  connect(push_button, SIGNAL(clicked()), this, SLOT(startProcess())); orm

  process = new QProcess();
  QObject::connect(process, SIGNAL(error(QProcess::ProcessError)), this, SLOT(processError (QProcess::ProcessError)));
} htm

void myWidget::startProcess()
{
  process->start("E:\\a\\b.exe");
} blog

void myWidget::processError(QProcess::ProcessError error)
{
 switch(error)
 {
  case QProcess::FailedToStart:
    QMessageBox::information(0,"FailedToStart","FailedToStart");
    break;
  case QProcess::Crashed:
    QMessageBox::information(0,"Crashed","Crashed");
    break;
  case QProcess::Timedout:
    QMessageBox::information(0,"FailedToStart","FailedToStart");
    break;
  case QProcess::WriteError:
    QMessageBox::information(0,"Timedout","Timedout");
    break;
  case QProcess::ReadError:
    QMessageBox::information(0,"ReadError","ReadError");
    break;
  case QProcess::UnknownError:
    QMessageBox::information(0,"UnknownError","UnknownError");
    break;
  default:
    QMessageBox::information(0,"default","default");
    break;
 }
} get

 

如上:在程序退出时,启动的外部程序不会随着主程序的退出而退出的,若是不但愿这种状况发生。
能够在程序退出以前,添加以下代码 it

if(process) io

{form

  process->close();

  delete process;

  process = NULL;

}

http://blog.sina.com.cn/s/blog_a6fb6cc90101drvj.html

相关文章
相关标签/搜索