首页 > 代码库 > qt中如何启动其他应用程序(如果不成功,还有许多原因即QProcess::ProcessError可供分析)
qt中如何启动其他应用程序(如果不成功,还有许多原因即QProcess::ProcessError可供分析)
类 QDesktopServices 提供的方法 访问 常用的桌面 服务 , 如 浏览 器 、 播放器、 电子邮件客户端 、 我们 使用 QDesktopServices :: openUrl(url) ,可以根据指定的url 打开Web 浏览 器 , 并返回 结果,如果 成功返回true ,否则 返回false。相应的可以打开文件(夹),可执行程序等!
如果想要启动其他应用程序使用QProcess, 当发生错误时,可以根据 指定 的 错误 描述 所发生 的错误类型 。
描述:在界面启动后,可通过点击按钮启动一个外部指定的程序!
myWidget::myWidget(QWidget *parent) :
QWidget(parent)
{
QPushButton *push_button = new QPushButton(this);
connect(push_button, SIGNAL(clicked()), this, SLOT(startProcess()));
process = new QProcess();
QObject::connect(process, SIGNAL(error(QProcess::ProcessError)), this, SLOT(processError (QProcess::ProcessError)));
}
void myWidget::startProcess()
{
process->start("E:\\a\\b.exe");
}
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;
}
}
如上:在程序退出时,启动的外部程序不会随着主程序的退出而退出的,如果不希望这种情况发生。
可以在程序退出之前,添加如下代码
if(process)
{
process->close();
delete process;
process = NULL;
}
http://blog.sina.com.cn/s/blog_a6fb6cc90101drvj.html
qt中如何启动其他应用程序(如果不成功,还有许多原因即QProcess::ProcessError可供分析)