Qtopia Home - Classes - Hierachy - Annotated - Functions - Qt Embedded |

# Qtopia Overview

- Introduction
- Software Stack
- Qtopia's Qt/Embedded Configuration
- Qtopia, Qt Versions and Binary Compatibility
- Qtopia Platform
  - Qtopia PIM Access Library

## Introduction

Qtopia is a platform for embedded Linux devices. Qtopia provides the end-user with a set of core applications that are expected on modern embedded platforms such as PIM applications (Address Book, Calendar and Todo) and a Media Player.

Qtopia provides the developer with a clean object-oriented API to write applications for an embedded device. Most of the API presented to the developer is the same API offered by Trolltech for cross-platform development between Windows, Mac and the UNIX's. The same code can be shared and reused on all of these desktop platforms and now Qtopia is just another platform to run your great Qt applications.

The Qtopia platform encomposses both the software that runs on an embedded device and the software that runs on a end-user's desktop. The software that runs on the desktop, called Qtopia Desktop, allows the user to synchronize their data between the embedded device and the desktop. Qtopia Desktop has built-in versions of the PIM application found in Qtopia. Qtopia Desktop allows developers to write plugins to synchronize their information. Please refer to the Qtopia Desktop documentation for more information.

For the most up to date documentation and product information for Qtopia, please visit Trolltech's website.

## Software Stack

The Qtopia software stack on the embedded device has four main layers as shown in the following image.

Insignia's Java is written on top of Qt/Embedded (and a Qt/AWT implementation). Other applications such as Opera's Web Browser and Handcom Office Suite is written on top of Qt/Embedded and Qtopia.

## Qtopia's Qt/Embedded Configuration

Trolltech's flagship product, Qt, is an API for cross-platform C++ development. Qt/Embedded allows applications written for the Qt/API to be recompiled and run for an embedded architecture without a underlying windowing system such as X11.

It is intended that an application that is written for an embedded device can use the same code that is used on the desktop. This allows the developer to have a single source tree for the entire application suite offering.

In fact, the developer will not see a different API for Qt/Embedded in the Qt documenation. However, Qtopia uses a subset of Qt/Embedded tuned for smaller footprint (displays, memory, speed, etc).

The modules removed from Qt due to their large size, speed or because they do not belong or are not necessary on an embedded device. For some of the modules, a description is provided if it is not obvious why this was left out of the Qt/Embedded offering for Qtopia.

- Core Qt: properties, transformations, QPrinter , XML module (too large and too slow to use)

- UI: QTextCodec modules, drag and drop, free type fonts, extra desktop styles (i.e. Motif) were replaced by Qtopia style plugins

- Images: No PPM images for QImageIO, QPicture

- QWidgets: QSplitter, QDial, QWorkspace

- QDialogs: QFileDialog (in Qtopia we use the document view system instead of exposing the file system to the user), QColorDialog, QProgressDialog, QPrintDialog, QInputDialog

If a developer attempts to use a component that has been removed from the Qt/Embedded for Qtopia offering, the developer will see a compiler error.

## Qtopia, Qt Versions and Binary Compatibility

Qtopia has shipped on the Sharp Zaurus 5500 and other embedded devices. Qtopia embedded requires Qt/Embedded 2.3. Qtopia Desktop requires Qt (either X11, Windows or Mac) version 3.2.x.

When the developer compiles their application, it must be compiled and linked against a binary compatible version of Qtopia and Qt/Embedded for that platform on the device. It is highly recommended for application authors to compile and link their applications using the latest SDKs provided by Trolltech to ensure binary compatibility. Please visit Trolltech's Qtopia developer download page for links to the latest commercial and GPL SDKs.

A library is binary compatible, if a program linked dynamically to a former version of the library continues running with newer versions of the library without the need to recompile. So applications compiled and linked for libqpe 1.5.0 should still link with libqpe 1.5.2 and vice-versa. If binary compatibility is broken, the application will not run on the target devices. To ensure binary compatibility, do not change any Qtopia API.

Functionality that is added to Qtopia 1.x will mainly be added through add-on libraries. These add on libraries can be installed on top of Qtopia 1.x. This will allow Qtopia 2 applications to run on a Qtopia 1.x device, as long as the Qtopia 2 applications depend on these 1.x libraries in the .ipk control files. These libraries should then be automatically installed due the dependency.

## Qtopia Platform

Qtopia platform consists of the Qtopia libraries (Qt/E, libqpe, libqtopia1, qtopiapim) and the Qtopia server/launcher. Application developers should use these libraries when writing applications for a Qtopia device. The Qtopia launcher/server is the main process that controls the windowing system, interprocess communication, launching all applications and other central tasks.

Please refer to the Qtopia Developer Reference Manual for more documentation about what is provided in the Qtopia library. This library links agains Qt/Embedded 2.3.

Note that the Qtopia core API has been broken up into two seperate libraries. One library is called libqpe and the other library is libqtopia1. libqpe 1.5.2 is binary compatible with the existing libqpe 1.5.0 and libqpe 1.5.1 libraries. libqtopia1 contains the source code for the additional methods and classes added to Qtopia for the Qtopia 1.7.0 release. Qtopia 1.7 applications depend on both of these libraries. Qtopia 1.5 devices will be able to install Qtopia 1.7 applications by installing libqtopia1 and any other libraries they need.

When you create a package, make sure you state all library dependencies so the package installer knows what it needs to install before your application can run. Please read the distribution packaging for more information regarding packaging and dependencies.

### Qtopia PIM Access Library

A separate library is provided for the embedded device to access the Qtopia PIM information. An application can depend on this ipkg for use of their application, and it will automatically be installed by the Application Installer software on Qtopia Desktop and Add/Remove Software Application. Please refer to QPEPIM Library documentation for more information. This library also depends on libqpe and libqtopia1 and Qt/Embedded 2.3.