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可供分析)的更多相关文章
- Qt中实现启动画面(延时过程中要加上app.processEvents())
纵所周之,当一个程序的启动比较耗时的时候,为了不让用户枯燥的等待或者是误以为程序运行异常了,所以我们都会在启动比较耗时的程序中加上启动界面 ,例如office软件等等. 在Qt中实现启动界面,主要就是 ...
- Qt中实现启动画面
纵所周之,当一个程序的启动比较耗时的时候,为了不让用户枯燥的等待或者是误以为程序运行异常了,所以我们都会在启动比较耗时的程序中加上启动界面 ,例如office软件等等. 在Qt中实现启动界面,主要就是 ...
- 2.QT中使用资源文件,程序打包
1 程序中使用资源文件 A 一个QT空项目 B 右击项目,添加新文件 添加后的效果是 C 右击main.prc,选择"添加现有项",找到要使用的资源文件.最终的效果是: ...
- 1.QT中播放视频,录音程序的编写
1 通过process的方式播放视频 T22VideoPlayer.pro HEADERS += \ MyWidget.h SOURCES += \ MyWidget.cpp QT += gu ...
- QT中使用google breakpad捕获程序崩溃异常
今天给大家介绍一个在linux下如何捕获程序崩溃异常的方法 一.google breakpad源码的下载和编译 1.https://github.com/google/breakpad.git,源码地 ...
- Qt中QListWidget的verticalScrollMode选项设置为ScrollPerPixel无效果的原因
设置为ScrollPerPixel无效果,根据Qt手册的描述,需要在设置一次setSingleStep()的值,才会生效
- Qt中添加OpenCV库
配置在Qt中的OpenCV,看了很多“教程”,最终成功.记一下过程. 本机配置: window7 32位系统: qt-opensource-windows-x86-mingw492-5.5.1: Op ...
- Qt 中程序自动重启
参照至 dbzhang老师的博文,记录于此....... 要想理解重启,先得看看Qt程序怎么退出! 1.退出 int main(int argc, char** argv) { QApplicatio ...
- QT中关闭应用程序和窗口的函数(quit(),exit()以及close()的区别)
使用QT编辑界面,其中带来很大方便的一点就是Qt中自带丰富的.种类齐全的类及其功能函数,程序员可以在编辑程序的过程中简单地直接调用.关于窗口关闭的操作,在这里指出常用的三个槽,即quit(),exit ...
随机推荐
- ActiveX控件的基本操作方法以及如何在VS2010下使用控件
在此,小编就介绍下ActiveX控件的基本操作方法以及如何在VS2010下使用控件,我们以一个程序为例, (1) 打开VS2010编译器(右键以管理员身份运行,因为ActiveX需要注册), ...
- P1697: [Usaco2007 Feb]Cow Sorting牛排序
这是一道置换群的裸题=-=,先拿来试试手对着打,以后应该会更加熟练吧! ; var n,i,j,maxx,minx,now,len,cursum,tmin,sum:longint; p:array[. ...
- json序列指定名称
class jsonModel{ public string md5 { get; set; } public object report { get; set; } public string @v ...
- Netsharp快速入门(之8) 基础档案(工作区2 设置商品主列表、规格细列表、商品表单、查询)
作者:秋时 杨昶 时间:2014-02-15 转载须说明出处 3.5.1.1 列表设置 1.选择第一行主列表,点工具-列表方案 2.打开列表方案界面后,在列表项目填入需要用到实体Demo.Arc ...
- PHP去除数组中重复数据的两个例子
例一: <?php$input = array("a" => "green","", "red"," ...
- 1565: [NOI2009]植物大战僵尸 - BZOJ
Description Input Output仅包含一个整数,表示可以获得的最大能源收入.注意,你也可以选择不进行任何攻击,这样能源收入为0.Sample Input3 210 020 0-10 0 ...
- 设计模式之建造者模式(Builder)
建造者模式原理:建造模式主要是用于产生对象的各个组成部分,而抽象工厂模式则用于产生一系列对象,建造者模式而且要求这些对象的组成部分有序. 代码如下: #include <iostream> ...
- [解决方案] 当 IDENTITY_INSERT 设置为 OFF 时
当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'tbUser' 中的标识列插入显式值. 解决:这个情况是你的表里面,有一列数据类型是IDENTITY的,也就是数据库自动递增列对于自 ...
- nsight 初级使用指南
1.安装,没有什么特殊设置 2.打开vs,编译生成你需要分析的.exe,在vs上方菜单,有nsight menu, choose Start Graphics Debugging. 3.在弹出对话框中 ...
- Linux下ettercap的安装,make安装软件步骤
第一步:下载ettercap的压缩包 用tar 解压压缩包,-z 用gzip的方式解压 -x 解打包/解压缩 -f 指定包 -v显示进度 ls 可以查看解压后出现一个新目录 ettercap-0.8 ...