Dr. Dobb's is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.

Channels ▼


Qt Application Development for Symbian

In 2007, Nokia introduced standard C libraries for the Symbian OS. At that time, we wrote an article for Dr. Dobb's by the name of "Open C: Paving the Way for Porting." Standard C infrastructure libraries can be found on all major operating systems today. With standard C libraries also in Symbian OS, application development became significantly easier, as did porting existing applications across different operating systems.

This time, we extend from the cross-platform standard C libraries to a full native application development for Symbian with Qt. Qt is a cross-platform native development framework for all major operating systems, including Linux, Windows, Mac, Symbian, and Maemo. This article explores developing applications with Qt for Symbian OS and deploying them on Nokia Ovi Store.

Qt supports Symbian-based S60 3.1, 3.2, 5.0 and the latest Symbian^3 devices. Today, Symbian holds the position of world's largest smart phone platform. We'll focus on writing applications with Qt, and deploying them on Ovi Store. Please note that most of the steps presented here are valid for other operating systems as well, but we'll focus on the Symbian environment.

[Click image to view at full size]

Getting Started

First, let's take a look at the components available for developers with Qt and Qt Mobility APIs. Then we'll delve into the Qt SDK, its IDE, Qt Creator, and the simulator. This will be followed by running an example on the simulator and the actual hardware. Once our application is done, we will demonstrate how to get it signed and deploy it on the Ovi store.


Qt SDK is an all-in-one installation package that has environments for desktop, Symbian, and Maemo/MeeGo development. The SDK incorporates the latest version of the Qt framework and the IDE, Qt Creator. It is designed to provide all the resources you need to create great apps easily for both desktop platforms and mobile devices. To further support mobile development, the Qt SDK contains mobility extensions called Qt Mobility APIs, support for on-device debugging, and Qt Simulator to enable quick mobile development on desktops.

The cross platform library Qt APIs are:

  • QtCore: Core non graphical classes used by other modules
  • QtGui: Graphical user interface (GUI) components
  • QtMultimedia: Classes for low level multimedia functionality
  • QtNetwork: Classes for network programming
  • QtOpenGL: OpenGL support classes
  • QtOpenVG: OpenVG support classes
  • QtScript: Classes for evaluating Qt Scripts
  • QtScriptTools: Additional Qt Script components
  • QtSql: Classes for database integration using SQL
  • QtSvg: Classes for displaying the contents of Scalable Vector Graphics files
  • QtWebKit: Classes for displaying and editing Web content
  • QtXml: Classes for handling XML
  • QtXmlPatterns: An XQuery & XPath engine for XML and custom data models
  • QtDeclarative: An engine for declaratively building fluid user interfaces, also known as Qt Quick/QML
  • Phonon: Multimedia framework classes
  • Qt3Support: Qt 3 compatibility classes (these are legacy support classes which are not supported in MeeGo and Symbian).

The Qt Mobility APIs are:

  • Bearer Management API: An API to control the system's internet connectivity state.
  • Camera API: Provides a framework to use Camera device features when supported by the platform.
  • Contacts API: An API enabling clients to request contact data from local or remote back ends.
  • Document Gallery API: Enables applications to search, filter and manipulate the meta data of files in local file system.
  • Feedback API: Allows applications to produce tactile feedback.
  • Landmarks API: As part of the Location API, it allows applications to create, retrieve, update and delete landmarks.
  • Location API : The Location API provides a library for distributing and receiving location data using arbitrary data sources.
  • Maps/Navigation API: Provides an API to access maps, landmarks and route information for navigation.
  • Messaging API: The Messaging API enables access to messaging services.
  • Multimedia API: Provides a set of APIs to play and record media, and manage a collection of media content.
  • Organizer API: Provides an interface to create, update, delete and share various organizer items such as events and to-do items
  • Publish and Subscribe API: The Publish and Subscribe API, containing Value Space, enables applications to read item values, navigate through and subscribe to change notifications.
  • Service Framework API: A set of Qt APIs to that allows clients to discover and instantiate arbitrary services.
  • Sensors API: The Sensors API provides access to sensors.
  • System Information: A set of APIs to discover system related information and capabilities.
  • Versit API: An API to manage Versit documents such as vCards.

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.