×
Namespaces

Variants
Actions
Revision as of 14:29, 15 January 2010 by tanjaluodes (Talk | contribs)

Launching a native application from Qt

From Nokia Developer Wiki
Jump to: navigation, search

Template:KBCS

Article Metadata
Tested with
Devices(s): Nokia 5800 XpressMusic
Compatibility
Platform(s): S60 3rd Edition, FP1, FP2
S60 5th Edition
Symbian
Article
Keywords: QProcess
Created: (29 Apr 2009)
Last edited: tanjaluodes (15 Jan 2010)

Contents

Overview

This code snippet shows how to launch a native Symbian application from Qt for S60.

Note: In order to use this code, you need to have Qt for S60 installed on your platform.


Preconditions


Header

The ProcessHandler starts the process and listens for its states.

#include <QObject>
#include <QProcess>
 
class ProcessHandler : public QObject
{
Q_OBJECT
 
public:
ProcessHandler(QObject *parent = 0);
~ProcessHandler();
 
public:
void StartCameraApp();
 
public Q_SLOTS:
void stateChanged(QProcess::ProcessState state);
void error(QProcess::ProcessError error);
 
private:
QProcess* process;
};


Source

Create QProcess and start listening for process state changes.

ProcessHandler::ProcessHandler(QObject *parent)
: QObject(parent)
{
process = new QProcess(this);
QObject::connect(process, SIGNAL(stateChanged(QProcess::ProcessState)),
this, SLOT(stateChanged(QProcess::ProcessState)));
}

Class descruction:

ProcessHandler::~ProcessHandler()
{
if (process->state() != QProcess::NotRunning)
{
// Close process if it is running
process->close();
}
}


Start the Symbian native camera Cameraapp.exe:

void ProcessHandler::StartCameraApp()
{
QString program = "Cameraapp.exe";
process->start(program);
}

QProcess signals the error to the error slot:

void ProcessHandler::error(QProcess::ProcessError error)
{
switch (error)
{
case QProcess::FailedToStart:
case QProcess::Crashed:
case QProcess::Timedout:
case QProcess::ReadError:
case QProcess::WriteError:
case QProcess::UnknownError:
{
// TODO: Handle error
break;
}
default:
{
break;
}
};
}

QProcess signals the process state changes to the stateChanged slot.

void ProcessHandler::stateChanged(QProcess::ProcessState state)
{
switch (state)
{
case QProcess::NotRunning:
case QProcess::Starting:
case QProcess::Running:
{
// TODO: do what you want with
// different states
break;
}
default:
{
break;
}
};
}


Postconditions

The Symbian native camera is started from the Qt for S60 application.

101 page views in the last 30 days.
×