Cross platform application development with Qt Daniel Rocha Sr. Technology Expert Forum Nokia
Contents
Introduction
Qt overview
Qt for Nokia’s mobile platforms
Hands-on demo
1. Introduction Qt is cute
Background
Trolltech was founded in 1994 and first Qt release went live 1995
I n June 2008 Nokia acquired Trolltech ASA to enable the acceleration of their cross-platform software strategy for mobile devices and desktop applications, and to develop its Internet services business.
On September 27, 2008 Nokia fully integrated Trolltech and named the new Nokia entity Qt Software.
Nokia will keep the Qt cross platform focus.
Nowadays ” Qt Development Frameworks ”
http:// qt.nokia.com
Facts
Easy to learn
Comprehensive documentation with good examples
Qt x mobile features
In the first phase you will need to write Qt + native code
Qt ’Mobility APIs’
Supports major desktop OSs + Nokia’s platforms
Qt will be the main choice for developers cross-platform development and Nokia platforms
http:// qt.nokia.com
What is Qt?
Pronounced “cute”.
Qt is a cross platform application framework .
All the tools you need to develop applications are offered free of charge.
Qt offers APIs for C++
An application done with Qt can be run on all widely used desktop environments and also embedded environments like Windows CE, Maemo Linux (N900) and Symbian
Apps are compiled to native applications . Qt is implemented starting from as low level as suitable instead of providing new API layers on top of existing high-level APIs.
http:// qt.nokia.com
Qt http:// qt.nokia.com
Qt versions
Qt 4.5 is the latest stable version of Qt and was released in March 2009. Improvements include:
Newest Qt WebKit Integration
The WebKit browser engine included with Qt has the latest WebKit features:
Support for full page zooming, with appropriate rescaling of images and fonts.
The CSS-based transformation and animation features provided by a WebKit extension.
Netscape plugin API
Mac OS X Cocoa Support
XML Transformations with XSLT
http:// qt.nokia.com
Qt versions
Qt 4.6 beta has been announced in October 2009. Improvements include:
Symbian support
Maemo support
Animation framework
State machine framework
Multi touch support
DOM access API: Web pages and XML
Performance optimizations
Graphics effects: blurring, colorizing, blooming.
Qt 3D – simplifying Open GL
http:// qt.nokia.com
2. Overview Qt is easy
C++ Application Framework
Qt provides easy C++ APIs
Qt goes beyond C++ in the areas of inter-object communication and flexibility for advanced GUI development.
Adds some features to C++:
A very powerful mechanism for seamless object communication called signals and slots
Queryable and designable object properties
Powerful events and event filters
Contextual string translation for internationalization
Sophisticated interval driven timers that make it possible to elegantly integrate many tasks in an event-driven GUI
Hierarchical and queryable object trees that organize object ownership in a natural way
Guarded pointers (QPointer) that are automatically set to 0 when the referenced object is destroyed
Overview
The Qt class library encompasses all the functions needed to build robust, high-end applications
Separated into several modules, Qt’s intuitive API includes
Core Classes
GUI Classes
SQL Database Classes
XML Classes
Networking Classes
OpenGL ® Classes
Qt WebKit Integration
Multimedia classes
And more
Signals and Slots in Core Module
Unique inter-object communication mechanism provides
Type-safe callback between objects
Facilitates loose coupling / encapsulation
Sender and receiver does not “know about” each other
1-to-many, many-to-1 communication between objects
Works across threads
Fully object-oriented
A signal is emitted when a particular event occurs . A slot is a function that is called in response to a particular signal .
Qt GUI Classes
All the UI components usually needed
Customized components can be written and integrated with IDEs
Provides rich set of GUI components and supporting functionality
User interface components
Simple to complex widgets and controls, dialogs
Model-View-Controller (MVC) Item views
Styles – ensuring native or custom look and feel on target platforms
Font-aware layout system
Accessibility classes
Canvas component with Widget support
Qt Database Classes
Provide platform and database- independent access functionality
Driver Layer
Low-level bridge between specific databases and the SQL API layer
SQL API Layer
Provide access to databases
User Interface Layer
Link data from a database to data-aware widgets
Supports most major database drivers
DB2, IBASE, MySQL, OCI, ODBC, PSQL, SQLITE, TDS
QSqlDatabase db = QSqlDatabase::database("sales"); QSqlQuery query ("SELECT Lastname, City FROM Names", db);
Provides possibility to play/synchronize multiple sound/video streams
Will use native back-end format support
DirectShow on Windows
GStreamer on X11
QuickTime on Mac
MMF on Symbian
Plan to add more video and authoring support in the future
Phonon::VideoPlayer *player =
new Phonon::VideoPlayer(Phonon::VideoCategory, parentWidget);
player->play(url);
Qt Designer: GUI layout and forms builder
Qt Creator : C ross-platform IDE for use with the Qt application framework
Qt Linguist: Internationalization toolset
Qt Assistant: Customizable documentation reader
qmake: Cross-platform build tool
Integration with Visual Studio ® and Eclipse ® IDEs – including Nokia’s Carbide.C++ For Symbian
Integration with Maemo SDK in the works
Development Tools
Qt Designer
Qt Designer is a powerful, drag-and-drop GUI layout and forms builder
Features
Supports forms and dialog creation with instant preview
Integrates with Qt layout system
Extensive collection of standard widgets
Support for custom widgets and dialogs
Seamless integration with many IDEs
Benefits
Greatly speeds the interface design process
Enables native look and feel across all supported platforms
Developers work within the environment of their choice, leveraging existing skills
Qt Creator
Lightweight, cross-platform IDE for Qt
Advanced C++ code editor
Integrated, context sensitive help system
Integrated visual debugger (based on gdb)
Integrated source code management
Project and build management tools
Integrated Qt development tools
Code navigation tools
Challenge
Projects contain hundreds of source files
Developers often don’t know name/location of file
Solution
Open files without knowing exact names or locations
Search for classes, functions, symbols and files
Follow symbols across several locations/files
Switch between headers and source files
Switch between declarations and definitions
Quickly finding and opening classes.
Tailored to the needs of Qt cross-platform developers
Challenge
Qt is cross-platform, but IDEs/dev. environments are not
Can be difficult to get up with a new framework
Solution
True cross-platform development environment for Qt
Integrated Qt-specific features (i.e. Signals & Slots)
Debugger aware of Qt class structures
New developers get productive sooner
Visualizing Qt class structures in Debug mode.
Powerful C++ code editor
Challenge
Writing elegant, correct code can be time consuming
Finding help often demands context switching
Solution
Syntax highlighting and automatic code completion
Static code checking as you type
Context sensitive help
Code folding
Parenthesis matching and parenthesis selection modes
Advanced editing capabilities like block selection
Code completion. Context-sensitive help.
Available as part of complete SDK Qt Designer GUI Layout & Forms Tool Qt Assistant Help file/documentation browser Qt Linguist Translation/I18n Tool qmake Cross-platform build tool Qt Development Tools Qt Libraries Qt SDK Licensing Options: Commercial LGPL
3. Qt on Nokia’s mobile platforms Qt is mobile
Nokia + Ovi Developer Story | With the simplified toolchain you can tackle f. ex Maemo and Symbian-based devices Develop on PC, Mac or Linux Nokia’s Qt mobile offering
Qt for Symbian platform
Qt Development Frameworks announced in October-08 the porting of Qt to Symbian OS, the world's leading, open smartphone platform
Beta package available for download from Qt Development Frameworks website http://qt.nokia.com (http://qt.nokia.com/developer/qt-4.6-beta-for-symbian-developers).
With the inclusion of the Symbian OS platform, developers have an additional 130 million target devices that they can support with their Qt-based applications.
Qt for Symbian platform - Total Offering
Qt for Symbian – Qt 4.6 ported to S60 3 rd Edition FP 1 and FP 2, 5 th editions.
Will be the only UI framework for Symbian Foundation devices in 2010.
Where to get it: http://pepper.troll.no/s60prereleases/
Qt for Symbian releases FINAL P11 Garden P3-09 based on 4.5 Tower P6-09 based on 4.5 Pyramid P10 based on 4.4 QtNetwork QtXml QtGUI *) QtCore QtScript QtSql QtSvg http://pepper.troll.no/s60prereleases/ Beta late P9 QtXmlPatterns QtWebkit Phonon QtTest
Colossus release focusing on HW
acceleration and performance
Bringing in QtSqt, QtWebkit (experimentary version) and phonon with MMF
QtOpenGL Q3Support
Qt Support in Carbide.c++ 2.0
Support for Qt development
Carbide works with Qt projects
.PRO editor for easy project configuration
Package /deploy projects to phone
Qt plug-ins are included in Carbide
Qt project Wizard
Support for Qt UI design tool
Oh yeah, since Qt for Symbian is a Symbian application, you can use same tools for debugging, profiling etc.
Qt for Maemo platform
Maemo is an open-source development
platform for Internet Tablets and maemo
mobile computers (f.ex N900)
90% of source code is open-source
Maemo 5 contains GSM and 3G functionality
In maemo 5 GTK is still supported as development framework – not officially supported in maemo 6 anymore
We’re bringing in Qt for maemo and encourage all developers to use Qt as the long term solution
Product evolution Internet Optimized Multimedia Computer Nokia N800 2 nd generation of Nokia Internet Tablets. Nokia N810 Taking the positioning of the Tablet Category from a predominantly ‘one-way’ surfing tool, to a genuine ‘two way’ communication device. With integrated slide keyboard N810 leads the richly connected pocketable Web 2.0 experience allowing you to connect to your content and experiences wherever you are. Nokia N810 WiMAX Edition Bringing WiMAX connection to strengthen the internet story. With wider wireless internet coverage, Internet will truly become personal and mobile. Nokia 770 1 st generation of Nokia Internet Tablets Easy access to the internet. High resolution touch screen.
Maemo 5
Linux based operating system for N900
Optimized for pocket sized devices and finger use
Panorama desktop
Multitasking with dashboard
New UI style
Animated UI
Compositing window manager
Accelerated graphics with OpenGL-ES2
http://www.forum.nokia.com/devices/N900 N900 WLAN IEEE 802.11b/g 32 GB internal storage Integrated GPS with A-GPS High definition camera support (integrated Image Signal Processor) 5 megapixel camera (2584 × 1938 pixels) HW acceleration for OpenGL ES 2.0 3.5 inch touch-screen 800 × 480 pixel resolution High-speed USB 2.0 HSPA/3G support – online anywhere 3G connectivity TI OMAP 3 processor, ARM Cortex-A8 600 MHz
Hildon UI – simple and customizable Taskbar to navigate applications Status bar indicating device state Widgets and RSS feeds for up-to-date information Consistent controls across applications
Maemo software architecture ARM/OMAP-based Linux kernel GNOME Structured File Library System Libraries incl. GNU C, STD C++, OpenSSL, curl HTTP, etc Maemo SDK Qt Maemo UI and applications Debian Package Management System services such as D-Bus, DSM, MCE, BME, and SQLite DB GNOME Configuration Management Telepathy Communication Framework gStreamer Multimedia Framework E-D-S Calendar/ Contacts GNOME VFS File Access Maemo Launcher Maemo platform: Mostly open source except connectivity, power management and licensed software Mostly binary code for Nokia devices Hildon UI Framework GNOME/GTK+ Application Framework
There have been lot of speculation and concerns of used licensing model.
The current release is under Commercial Tech Preview license which allows evaluating and testing only.
Qt 4.5 will be released under LGPL i.e no license fees for closed source commercial development
On 14 January, Nokia announced that its Qt cross-platform user interface (UI) and application framework for desktop and embedded platforms will be available under the open source LGPL version 2.1 license from the release of Qt 4.5, scheduled for March 2009. In addition:
Qt source code repositories will be made publicly available and will encourage contributions from desktop and embedded developer communities.
Service offerings for Qt will be expanded to ensure that all Qt development projects can have access to the same levels of support, independent of the selected license.
Presentation on Qt Developer Frameworks for a more more
Presentation on Qt Developer Frameworks for a more technical audience, including the changes in version 4.6 and support for Maemo and Symbian mobile platforms. less
0 comments
Post a comment