×
Namespaces

Variants
Actions
(Difference between revisions)

How to launch other applications in Qt

From Nokia Developer Wiki
Jump to: navigation, search
hamishwillee (Talk | contribs)
m (Add Abstract. Point to correct Qt SDK)
hamishwillee (Talk | contribs)
m (Hamishwillee - Bot change of template (Template:CodeSnippet) - now using Template:ArticleMetaData)
Line 2: Line 2:
 
{{ReviewerApproved|timestamp=20090913}}
 
{{ReviewerApproved|timestamp=20090913}}
  
{{CodeSnippet
+
{{ArticleMetaData
 
|id=...
 
|id=...
 
|platform=Qt
 
|platform=Qt
Line 10: Line 10:
 
|creationdate= 10 June 2009
 
|creationdate= 10 June 2009
 
|keywords=QDesktopServices::openUrl(), QProcess::start()
 
|keywords=QDesktopServices::openUrl(), QProcess::start()
 +
 +
|sourcecode= <!-- Link to example source code (e.g. [[Media:The Code Example ZIP.zip]]) -->
 +
|installfile= <!-- Link to installation file (e.g. [[Media:The Installation File.sis]]) -->
 +
|sdk=<!-- SDK(s) built and tested against (e.g. [http://linktosdkdownload/ Nokia Qt SDK 1.1]) -->
 +
|devicecompatability=<!-- Compatible devices (e.g.: All* (must have GPS) ) -->
 +
|signing=<!-- Empty or one of Self-Signed, DevCert, Manufacturer -->
 +
|capabilities=<!-- Capabilities required (e.g. Location, NetworkServices.) -->
 +
|author=[[User:Savaj]]
 
}}
 
}}
  

Revision as of 12:05, 24 June 2011

{{{width}}}
13 Sep
2009
Article Metadata
Tested with
Devices(s): Nokia 5800
Compatibility
Platform(s): Qt
Symbian
Article
Keywords: QDesktopServices::openUrl(), QProcess::start()
Created: savaj (10 Jun 2009)
Last edited: hamishwillee (24 Jun 2011)


Contents

Overview

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.

This snippet can be self-signed.

Preconditions

  • Download and install the Qt SDK

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://discussion.forum.nokia.com/forum/forumdisplay.php?f=40"));


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

void processError(QProcess::ProcessError err);
 
QProcess process;


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

395 page views in the last 30 days.
×