How to launch other applications in Qt
This code example shows how to start other applications from within a Qt application. It demonstrates QDesktopServices::openUrl() for opening URLs in the default browser and QProcess for launching arbitrary applications.
Article Metadata
Code Example
Tested with
Compatibility
Platform Security
Article
Contents |
Launching web browser
The class QDesktopServices provides methods for accessing common desktop services, like browser, player, e-mail client, etc. We use QDesktopServices::openUrl(), which opens the given URL in the appropriate Web browser for the user's desktop environment, and returns true if successful; otherwise returns false. If the URL is a reference to a local file (i.e., the URL scheme is "file") then it will be opened with a suitable application instead of a Web browser. For example, you can use URL "file:///c:/data/abc.png" to open abc.png in its default application. similarly you can play audio/video.
Header required
#include <QDesktopServices>
#include <QUrl>
Source code
//openUrl is static method of class QDesktopServices, so no need to create instance of it.
//Open URL in browser
QDesktopServices::openUrl(QUrl("http://www.developer.nokia.com/Community/Discussion/forumdisplay.php?40-General-Symbian-C"));
Launching RealPlayer
QProcess is used to start external programs and to communicate with them.
Header required
#include <QDesktopServices>
#include <QUrl>
Source code
//openUrl is static method of class QDesktopServices, so no need to create instance of it.
//to open vedio file in realplayer give full path here.
QDesktopServices::openUrl(QUrl("file:///e:/Videos/Nokia 5800 XpressMusic.mp4"));
Launching Email Client
Header required
#include <QDesktopServices>
#include <QUrl>
Source code
//openUrl is static method of class QDesktopServices, so no need to create instance of it.
//Open email client.
QDesktopServices::openUrl(QUrl("mailto:ratang.gir@gmail.com?subject=Testing feedback&body=HelloFriend"));
Launching other applications
Header required
#include <QProcess>The signal error() of QProcess is emitted when an error occurs with the process. The specified error describes the type of error that occurred.
Header file
Source code
QtAppLauncher::QtAppLauncher(QWidget *parent)
: QMainWindow(parent)
{
//connect error() to slot processError() to get error, if occurs.
QObject::connect( &process, SIGNAL(error(QProcess::ProcessError)),
this, SLOT(processError(QProcess::ProcessError)));
//pass the name of executable that you want to launch. i have installed helloworld so passed helloworld.
process.start("helloworld");
}
//get errors, if any
void QtAppLauncher::processError(QProcess::ProcessError err)
{
switch(err)
{
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;
}
}
Postconditions
The code snippet is expected to launch browser, realplayer and helloworld application.
Code Example
- Download File:QtAppLauncher.zip.


13 Sep
2009
Generally we need to use one application from the other which is currently running. The article presents the same in Qt. It shows to launch another application from the current one. Moreover, the article also shows the code snippest to lauch web browser, real player and e-amil client. The APIs used in this article for achieving this are QDesktopServices and QProcess.
The article is well-explained and can be useful to beginners as well as intermediate developers.
It's slightly pointless to translate URI in QUrl's constructor. I've fixed article text, while attached source code archive still contains it.
divanov
TooLong -
Open browser seems not to work on Symbian belle?TooLong 22:44, 4 March 2012 (EET)