类 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可供分析)的更多相关文章

  1. Qt中实现启动画面(延时过程中要加上app.processEvents())

    纵所周之,当一个程序的启动比较耗时的时候,为了不让用户枯燥的等待或者是误以为程序运行异常了,所以我们都会在启动比较耗时的程序中加上启动界面 ,例如office软件等等. 在Qt中实现启动界面,主要就是 ...

  2. Qt中实现启动画面

    纵所周之,当一个程序的启动比较耗时的时候,为了不让用户枯燥的等待或者是误以为程序运行异常了,所以我们都会在启动比较耗时的程序中加上启动界面 ,例如office软件等等. 在Qt中实现启动界面,主要就是 ...

  3. 2.QT中使用资源文件,程序打包

     1 程序中使用资源文件 A  一个QT空项目 B  右击项目,添加新文件 添加后的效果是 C  右击main.prc,选择"添加现有项",找到要使用的资源文件.最终的效果是: ...

  4. 1.QT中播放视频,录音程序的编写

     1  通过process的方式播放视频 T22VideoPlayer.pro HEADERS += \ MyWidget.h SOURCES += \ MyWidget.cpp QT += gu ...

  5. QT中使用google breakpad捕获程序崩溃异常

    今天给大家介绍一个在linux下如何捕获程序崩溃异常的方法 一.google breakpad源码的下载和编译 1.https://github.com/google/breakpad.git,源码地 ...

  6. Qt中QListWidget的verticalScrollMode选项设置为ScrollPerPixel无效果的原因

    设置为ScrollPerPixel无效果,根据Qt手册的描述,需要在设置一次setSingleStep()的值,才会生效

  7. Qt中添加OpenCV库

    配置在Qt中的OpenCV,看了很多“教程”,最终成功.记一下过程. 本机配置: window7 32位系统: qt-opensource-windows-x86-mingw492-5.5.1: Op ...

  8. Qt 中程序自动重启

    参照至 dbzhang老师的博文,记录于此....... 要想理解重启,先得看看Qt程序怎么退出! 1.退出 int main(int argc, char** argv) { QApplicatio ...

  9. QT中关闭应用程序和窗口的函数(quit(),exit()以及close()的区别)

    使用QT编辑界面,其中带来很大方便的一点就是Qt中自带丰富的.种类齐全的类及其功能函数,程序员可以在编辑程序的过程中简单地直接调用.关于窗口关闭的操作,在这里指出常用的三个槽,即quit(),exit ...

随机推荐

  1. 通过find命令寻找文件并拷贝到一个指定目录方法详解

    有这样的一个需求,需要将一部分符合条件的文件从一个目录拷贝到另一个目录中,可以通过使用find命令从源目录查找到符合条件的文件然后使用cp命令拷贝到目标目录   将通过find命令找到的文件拷贝到一个 ...

  2. android selector

    android 选择器的使用 1.在drawable文件夹下面建一个xml文件,如item.xml,在eclipse中有selector这个选项 2.可以在布局文件.xml(配置android:lis ...

  3. 命令行连接wifi

    ubuntu没有图形界面,插入无线网卡后启动不能连接无线. 看这个帖子 http://askubuntu.com/questions/138472/how-do-i-connect-to-a-wpa- ...

  4. schedule和scheduleAtFixedRate区别

    需求: 由于系统长期运作,各设备之间产生很多信息,一段时间后需要清除数据 考虑方案: 用schedule还是scheduleAtFixedRate,在此比较分析了下这两个的区别 schedule和sc ...

  5. Android开发-环境搭建以及HelloWorld

    最近开始进行Android的开发,没有基础完全从0开始.   首先,知道Android开发的官方网站: http://developer.android.com/index.html 网站本身教程非常 ...

  6. bzoj 2743 树状数组离线查询

    我们按照询问的右端点排序,然后对于每一个位置,记录同颜色 上一个出现的位置,每次将上上位置出现的+1,上次出现的-1,然后 用树状数组维护就好了 /************************** ...

  7. java 验证日期

  8. 可执行文件(ELF)格式之讲解

    ELF(Executable and Linking Format)是一种对象文件的格式,用于定义不同类型的对象文件(Object files)中都放了什么东西.以及都以什么样的格式去放这些东西.它自 ...

  9. 简单shell脚本

      简单shell脚本备忘   #!/bin/sh num= ] do table_num=`printf %03d ${num}` echo album_info_${table_num} #mys ...

  10. BZOJ 1029 [JSOI2007] 建筑抢修(贪心)

    1029: [JSOI2007]建筑抢修 Time Limit: 4 Sec  Memory Limit: 162 MBSubmit: 2285  Solved: 1004[Submit][Statu ...