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

时间: 2024-12-19 14:35:48

qt中如何启动其他应用程序(如果不成功,还有许多原因即QProcess::ProcessError可供分析)的相关文章

Qt中实现启动画面

纵所周之,当一个程序的启动比较耗时的时候,为了不让用户枯燥的等待或者是误以为程序运行异常了,所以我们都会在启动比较耗时的程序中加上启动界面 ,例如office软件等等. 在Qt中实现启动界面,主要就是使用QSplashScreen类.该类比较简单,这里就不对类本身做过多说明了,主要是以一个例子来说明他的使用方法. 1.首先,我们的实现如下: [cpp] view plaincopy #include <QApplication> #include <QSplashScreen> #

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

 1 程序中使用资源文件 A  一个QT空项目 B  右击项目,添加新文件 添加后的效果是 C  右击main.prc,选择"添加现有项",找到要使用的资源文件.最终的效果是: D 使用qrc文件 T27Resource.pro RESOURCES += \ main.qrc SOURCES += \ main.cpp QT += gui widgets main.cpp #include <QApplication> #include <QLabel> #

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

 1  通过process的方式播放视频 T22VideoPlayer.pro HEADERS += \ MyWidget.h SOURCES += \ MyWidget.cpp QT += gui widgets MyWidget.h #ifndef MYWIDGET_H #define MYWIDGET_H   #include <QWidget> #include <QProcess> #include <QSlider>   class MyWidget :

Qt中添加OpenCV库

配置在Qt中的OpenCV,看了很多“教程”,最终成功.记一下过程. 本机配置: window7 32位系统: qt-opensource-windows-x86-mingw492-5.5.1: OpenCV2.4.10. 对于我来说配置过程比较难,因为目前我没用过Qt和Cmake,之前一直用VS编译C++,也没有用过MinGW,所以看教程中的各种命令或者执行文件都比较费时.这次各种尝试后成功.参考资料的连接在最后,其中帮助我最大的就是那一篇纯英文的,很详细. 前期准备 Qt5的opensour

qt中实现单一启动qt程序的设置

在Qt中设置程序的单一启动的方式: 1.将里面的qtsingleapplication目录拷贝到项目的源码目录中,在代码中添加文件 2.在pro文件中添加qt连接的库 QT += network 3.main函数中的代码 #include <QtSingleApplication> QtSingleApplication app(argc, argv); if (app.isRunning()){    app.sendMessage("raise_window_noop"

Qt 中程序自动重启

参照至 dbzhang老师的博文,记录于此....... 要想理解重启,先得看看Qt程序怎么退出! 1.退出 [cpp] view plain copy int main(int argc, char** argv) { QApplication a(argc, argv); Widget w; w.show() return a.exec(); } 最后一句启动了主线程的事件循环.而要退出程序,就是要退出这个事件循环,使main函数返回. 如何退出? 正确方式: [cpp] view plai

QT中控制台程序运行问题

环境: ubuntu14.04 问题与解决方法: QT中的控制他程序,默认运行方式是直接输出到Output窗口中来.我的程序需要从控制台输入,这时候默认的运行方式就不行了.通过设置工程全选项让它在终端中运行: projects--Build&Run--Run--选中Run In Terminal 此时可能还有问题,就是即不从Output窗口输出,也不从终端运行,这其实应该是终端配置有问题,修改一下: 菜单--工具--选项--环境--普通--系统--终端:/usr/bin/gnome-termin

init.rc文件中面启动c++程序,通过jni调用java实现

</pre><p>注:假设是自己的myself.jar包,还要修改例如以下:</p><p>target/product/core_base.mk PRODUCT_BOOT_JARS := core:myself</p><p></p><p>功能:手机开机后要写个标志位. 已有实现.就是收到开机广播后,启动服务读取bp中的标志位(java代码须要等待ril准备好).并把这个标志位写入到ap中(java代码调用c++

[C#]在程序中启动另外一个程序

C#实现在程序中启动另外一个程序 ProcessStartInfo info = new ProcessStartInfo();    info.FileName = "notepad++.exe";//要启动的程序外部名称   info.Arguments = "1009.txt";//设置外部程序的启动参数    info.WorkingDirectory = @"D:\Users\Desktop";    Process pro;//申明一