×
Namespaces

Variants
Actions
(Difference between revisions)

How to launch other applications in Qt

From Nokia Developer Wiki
Jump to: navigation, search
divanov (Talk | contribs)
hamishwillee (Talk | contribs)
m (Add Abstract. Point to correct Qt SDK)
Line 1: Line 1:
 
[[Category:Qt]]
 
[[Category:Qt]]
{{ReviewerApproved}}
+
{{ReviewerApproved|timestamp=20090913}}
  
 
{{CodeSnippet
 
{{CodeSnippet
Line 15: Line 15:
 
==Overview==
 
==Overview==
  
Frequently we need to start other applications from our application. For example, need to launch browser to open web page or need to launch player to open video link. Also, sometime need to start our other application from current one. In Qt class QProcess is used to start external programs and to communicate with them.  
+
{{Abstract|visible=true|This code example shows how to start other applications from within a Qt application. It demonstrates [http://doc.qt.nokia.com/stable/qdesktopservices.html#openUrl QDesktopServices::openUrl()] for opening URLs in the default browser and [http://doc.qt.nokia.com/stable/qprocess.html QProcess] for launching arbitrary applications. }}
  
The class QDesktopServices provides methods for accessing common desktop services, like browser, player, e-mail client, etc.<br>
+
This snippet can be self-signed.  
 
+
QDesktopServices has a static method called 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.<br>
+
 
+
This snippet can be self-signed. As it does not use any API which require developer/certified signing.<br>
+
  
 
==Preconditions==
 
==Preconditions==
  
* Download and Install latest version [[Qt for Symbian - Installation packages]] which has links on how to install the latest version
+
* Download and install the [[Qt SDK]]
  
 
==Launching web browser==
 
==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'''
 
'''Header required'''
Line 43: Line 40:
 
<br>
 
<br>
 
==Launching RealPlayer ==
 
==Launching RealPlayer ==
 +
QProcess is used to start external programs and to communicate with them.
 +
 +
  
 
'''Header required'''
 
'''Header required'''
Line 133: Line 133:
  
 
</code>  
 
</code>  
<br>
+
 
 
==Postconditions==
 
==Postconditions==
  
 
The code snippet is expected to launch browser, realplayer and helloworld application.
 
The code snippet is expected to launch browser, realplayer and helloworld application.
<br>
+
 
 
== Code Example ==
 
== Code Example ==
  
* Download the working [[Media:QtAppLauncher.zip|Code Example]].[[Category:How To]][[Category:Code Examples]]
+
* Download [[File:QtAppLauncher.zip]].
 +
 
 +
[[Category:How To]][[Category:Code Examples]]

Revision as of 02:50, 26 April 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: (10 Jun 2009)
Last edited: hamishwillee (26 Apr 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

443 page views in the last 30 days.