类 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. mini6410-JNI-led

    一.编写JNI模块 当安装好NDK编译环境后,会在它的目录下找到sample目录,它里面有一些例子,可以参考这些例子来写我们自已的模块. 1.在/home/android/文件夹下,新建“ledjni ...

  2. 动态链接库知识点总结之三(如何以显示的方式加载DLL)

    总结一下如何显示加载方式加载DLL, 首先,我们新建一个win32项目,选择dll,空项目,再添加一个源文件,一个模块定义文件(.def),具体如下图.(详细方法已经在前两篇文章中讲述,如有不懂,打开 ...

  3. 状压DP

    今天稍微看了下状压DP,大概就是这样子的,最主要的就是位运算, i and (1<<k)=0 意味着i状态下没有 k : i and (1<<k)>0 意味着i状态下有 ...

  4. SQL SERVER定时任务执行跟踪--供远程查看 [原创]

    一.背景 每次查需要优化的SQL都需要上外网,通过Profiler,报表或者DMV执行特定sql来查找,来回跑很麻烦,能不能在本地直接监控外网的好性能的SQL呢?方法是有的,我们可以通过把Profil ...

  5. Java BigDecimal大数字操作

    在java中提供了大数字的操作类,即java.math.BinInteger类和java.math.BigDecimal类.这两个类用于高精度计算,其中BigInteger类是针对大整数的处理类,而B ...

  6. MyEclipse 中的各种有的没的快捷方式

    快捷键1 (CTRL) Ctrl+1 快速修复Ctrl+D: 删除当前行  Ctrl+Q  定位到最后编辑的地方  Ctrl+L  定位在某行   Ctrl+O  快速显示 OutLine  Ctrl ...

  7. php大文件下载

    <?php header("Content-Type:text/html;charset:utf-8"); //class FileDownServer{ //$file_n ...

  8. android开发 wifi开发工具类

    import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.Iterator; import j ...

  9. android 自动化压力测试-monkey 1 实践

    Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序进行压力测试.Monkey ...

  10. discuz之同步登入

    前言   首先感谢dozer学长吧UCenter翻译成C# 博客地址----------->http://www.dozer.cc/   其次感谢群友快乐々止境同学的热心指导,虽然萍水相逢但让我 ...