Cutest technology of them all - Forum Nokia Qt Webinar December 2009


Published on

Qt now and in the future - overview of Qt and the plans for Nokia platforms. Newest features of Qt including animation framework, gestures etc. Qt for Symbian and Maemo. Qt Mobility APIs. Hybrid Applications.

Published in: Technology
No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Cutest technology of them all - Forum Nokia Qt Webinar December 2009

  1. 1. Qt. Cross platform. But still easy. It will be w e b a nd Q t p ek k a .k o s for Nokia. onen@no ki Slides will be available in
  2. 2. Qt and Web is the way to go Web Web Runtime developers For native Qt UI Extensions Developers UI 85% of use cases ** Qt Engine Mobile Qt Mobility APIs Features Low level Native Native Native 15% of use Native access APIs APIs APIs cases ** Desktop Symbian Linux OSs S60 on Symbian maemo Platform Platform ** Not based in any realiable statistics ;)
  3. 3. Why Qt? What is Qt about?  • QuickTime player? Programming language? A platform? Yet another runtime?   • A new Japanese car model? Qt is Cross‐platform application framework • Differentiated user experience across hardware platforms • Hybrid development: convergence of web and native applications • Cross‐platform software across desktops and mobile devices. Qt supports major  desktop OSs already and will extend it’s reach to Nokia platforms. • Qt is not a runtime – no perf issues or sandbox restrictions. You can stand out with  your native development skills to fulfill the use cases offered by Qt.  • Qt Mobility APIs will bring in the easy to use APIs for mobile use cases.  Shorter time to market • Productive APIs and comprehensive documentation with great examples • Delivering functionality faster and maximizing efficiency by placing focus on  innovation • All the great tools offered free of charge ‐ commercial services available as well 3
  4. 4. What is Qt? Qt is set of C++ libraries … 4
  5. 5. What is Qt? … which allows you to design applications … #include <QtGui> int main(int argc, char *argv[]) { QApplication application(argc, argv); QPushButton hello("Hello world!");; return application.exec(); } 5
  6. 6. What is Qt? ... that comes with a UI designer: Qt Designer … 6
  7. 7. What is Qt? ...and an IDE: Qt Creator … 7
  8. 8. What is Qt? ...that works on all these platforms: Example: Google Earth on Mac, Windows and Linux 8
  9. 9. Simplified development - PC, Mac, Linux The new offering is the only native mobile dev environment to work on Mac, Windows and Linux. Develop your way. The offering will be based on Qt, the development tool used to create applications such as Skype, Adobe Photoshop Elements and Google Earth. The tools will allow developers to use Windows, Mac OS X and Linux for their mobile development work.
  10. 10. Who uses Qt? From embedded devices to  From embedded devices to  By companies from  By companies from  desktop applications desktop applications many industries many industries 10
  11. 11. Why use Qt? * * Original image from: http://diddo‐ 11
  12. 12. Introducing Qt 4.6 and Beyond User experience Qt Everywhere •New animation framework •Qt ported to Symbian S60, Windows 7, Mac OS X  •Declarative expression of user interfaces 10.6, Maemo 5, Real‐time OS (QNX, VxWorks) •Qt applications can be deployed on millions of  •Gestures & multitouch support devices Performance In research •OpenVG graphics engine •XML Schema Validation •Optimizations to resource use  •Icon theming ability •Architecture‐specific improvements to ARM devices •Further embedded and smartphone improvements 12
  13. 13. New in Qt 4.6: Graphic Effects • Apply graphical effects to graphics items or widgets • Add highlight or accentuation to create visually appealing user interfaces • Key features: – Apply effects to any paint device – Enables effects on both QGraphicsItem and QWidget – Extend with your own effects – Common effects built in … Colorize, Blur, DropShadow, Opacity 13 13
  14. 14. New in Qt 4.6: States and Transitions • A robust state chart implementation based on Harel state-charts and SCXML • Key benefits: – Simplify application semantics – Use states to improve maintainability – Write verifiable application logic – Makes event-driven programming robust and reusable 14 14
  15. 15. New in Qt 4.6: Animation API • Allow users to create dynamic UIs • Integrates with States and Transitions • Key features: – Animate any QObject property – Combine animations in groups – Use easing curves – Synchronized timer for better CPU utilization 15
  16. 16. New in Qt 4.6: Gestures • Combine sequential touch inputs to a ‘gesture’ • Key benefits – Allow users to interact with applications in better ways – Simplify finger-based interaction with UI components – Allowing common basic gestures …as well as multi-touch gestures – Enable extensibility 16 16
  17. 17. New in Qt 4.6: Qt3D enablers • As more of Qt and applications built on Qt go 3D, API’s are provided to simplify this • Key benefits: – Simplifies creating 3D applications with OpenGL – API for vertex and fragment Shaders, GLSL/ES – Math primitives for matrix multiplication, vectors, quaternions (client-side) • Future research on Stencils, vertex buffers and arrays, texture manipulation, geometry shaders 17
  18. 18. Hybrid Development with Qt 4.6 • Qt includes a rich selection of features for web and hybrid development – QtWebKit module: embed web content from servers, local files or application’s resources into Qt applications, implement user interfaces in web technologies. – QtWebKit has a rich API to interact with the web content from C++, e.g. QWebElement can be used with the DOM – QtScript module: make Qt applications scriptable – QtXmlPatterns module: shape and mash up XML data yielding HTML output – QNetworkAccessManager: interact with server URL APIs 18
  19. 19. Weather Info ___ lines of Qt/C++ code? 19
  20. 20. Weather Info 411 lines of Qt/C++ code 20
  21. 21. Ray Casting ___ lines of Qt/C++ code? 21
  22. 22. Ray Casting 215 lines of Qt/C++ code 22
  23. 23. Google Chat Client ___ lines of Qt/C++ code? 23
  24. 24. Google Chat Client 140 lines of Qt/C++ code 24
  25. 25. Start today : you can soon get your Qt app running on more than + 130 000 000 smartphones! in addition to all majo r desktop OSs
  26. 26. Qt Mobility Project – new Qt APIs •Technology preview - package of new Qt APIs •The full release of these APIs is scheduled for 1st half of 2010 •Standard mobile functionality for applications •Evolving all the time! •Download Tech Preview 2: • qt-apis
  27. 27. Be the “Qtst” – Forum Nokia Code Competition Grand Prize Winner will receive a trip to the upcoming Nokia 2010 Developer Summit to be held in San Francisco, USA during June 9th and 10th! Top winners will also be selected to receive nominations as Forum Nokia Champion program as well as getting the coolest Nokia devices free of charge! For details go to Entries to the contest will be open from Dec 7th, 2009 until January 31, 2010. Register by latest 30th of December 2009! THANK YOU!
  28. 28. Pop the hood. Details of Qt. Instead of just power point mar s hm allow…
  29. 29. What’s in SDK? Qt SDK Qt Development Tools Licensing Options: Commercial Qt Libraries Qt Designer Qt Assistant LGPL GUI Layout & Help file/documentation browser Forms Tool Qt Linguist qmake Translation/I18n Tool Cross‐platform build tool 29
  30. 30. Qt Creator: Cross Platform IDE • Lightweight cross-platform IDE for Qt –An advanced C++ code editor –Integrated, context sensitive help system –Integrated visual debugger (based on gdb) –Integrated source code management –Project and build management tools –Qt developer tools integrated • Benefits –New developers get up and running faster –Boosts developer productivity –Tailored to the needs of Qt developers
  31. 31. Building Qt Applications – qmake! • Tool to simplify the build process across different platforms • Automates the generation of Makefiles • Generates Makefile based on the information in a project file • MOC and UIC invoke qmake Project Platform Application qmake specific make -project information Binary file (.pro/.pri) Makefiles
  32. 32. Qt Modules Qt provides native look-and-feel in all platforms Cross-platform Qt consists of 12 modules • A little bit less than 700 API classes, all modules depend on QtCore Enables pure Qt applications, but • Possibility to use platform APIs • Possibility to embed native elements, including UI widgets Development Tools included like Qt Creator, Qt Designer, Qt Assistant, Qt Linguist
  33. 33. Qt GUI Classes • Extends QtCore with GUI functionality QtOpenGl QtSvg QtWebKit QtXmlPatterns Qt3Support • UI application base class • UI components : set of widgets and dialogs QtGui QtSql QtXml QtNetwork QtScript Phonon • Widget layout management and classes for UI Events • All the UI components usually needed QtCore • Not enough? • Customized components can be done and integrated with Qt Creator • Provides rich set of GUI components and supporting functionality • 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
  34. 34. Qt – Modules (Network) •Classes for writing TCP/IP clients and servers QtOpenGl QtSvg QtWebKit QtXmlPatterns Qt3Support • Makes network programming easier and portable QtGui QtSql QtXml QtNetwork QtScript Phonon •Support for QtCore • Lower level protocols (TCP and UDP) and higher level application protocols (FTP and HTTP) • Seamless integration with progress widgets and any IO device • Host Name resolving services and URL parsing, SSL support and much more QHttp http; connect(http, SIGNAL(done(bool)), this, SLOT(done(bool))); http->get( “”); void MyClass::done(bool error) { QString data = http->readAll(); //handle data }
  35. 35. Qt – Modules (Sql) QtOpenGl QtSvg QtWebKit QtXmlPatterns Qt3Support • Provides database integration to Qt applications • Divided to three layers QtGui QtSql QtXml QtNetwork QtScript Phonon 1. UI Layer • Provides classes to link the data from database to data-aware widgets QtCore • Designed to work with Qt's model/view framework 2. API layer • Provides Qt’s abstracted database-independent SQL API 3. Driver layer • Provides low-level bridge between the specific databases and the SQL API layer QSqlDatabase db = • Uses driver plugins to communicate with the QSqlDatabase::database("sales"); different databases QSqlQuery query • Several drivers are supplied with Qt ("SELECT Lastname, City FROM Names", db);
  36. 36. Qt – Modules (XML) QtOpenGl QtSvg QtWebKit QtXmlPatterns Qt3Support •QtXml • Provides C++ implementation of SAX and DOM style XML parsers QtGui QtSql QtXml QtNetwork QtScript Phonon • Provides a stream reader and writer for XML documents QtCore • XSLT support •QtXmlPatterns • XQuery support for Qt QXmlStreamReader xml; • Simple SQL-like query language for traversing XML xml.addData( data ); documents while (!xml.atEnd()) • Can select and aggregate XML elements of interest { and transform them for output as xml.readNext(); ... XML or in some other format // do processing }
  37. 37. Qt – Modules (WebKit) QtOpenGl QtSvg QtWebKit QtXmlPatterns Qt3Support • Classes for displaying and editing Web content • Web content can be enhanced with native QtGui QtSql QtXml QtNetwork QtScript Phonon controls QtCore • Based on open-source WebKit engine • Ported to use Qt • Rendering • Text Handling • Network Access • Integrated part of WebKit project, uses WebKit’s platform abstraction • Qt Style API to engine: • QWebView, QWebPage and QWebFrame QWebView *view = new QWebView(parent); view->load(QUrl("")); view->show();
  38. 38. Qt for Symbian 38
  39. 39. Qt supports future native development on Symbian 1H09 2H09 2010 2011  • Technology Preview • Symbian OS, S60 3.1, • Planned for • Planned for Garden for Nokia 3.2 and 5.0 Symbian^3 Symbian^4 and Symbian device (S60 future releases 3.1+) • Part of Qt 4.5 • Qt for Symbian, • Qt as part of • Qt and new UI functionality on installed together Symbian platform framework in Symbian with Qt applications Symbian • Native Symbian as • Qt available for • Significance of Qt as • Qt as primary native primary developer commercial developer offering developer offering offering development grows *Qt for early preview, to invite feedback
  40. 40. Qt for Symbian – current status (Dec -09) •Qt 4.6.0 supports Symbian. It’s ~ feature complete but we’re not stopping here. December and January will be solely spent on optimization. •Qt 4.6.1 will be ready early 2010. That will be the version to release your Qt applications against! •At the same time we’ll have a tool called smart installer ready. The tool solves the problem of distributing Qt and dependencies to devices on the market (3.1, 3.2, 5.0)
  41. 41. Smart Installer The opportunity The problem The solution A Smart Installer tool that +130M Symbian devices Qt libraries need to be checks whether needed Qt could run cross-platform Qt post installed – most version is available on the applications already during consumers might not device – and if not, it will this year bother handle the installation Details •Nokia is working on a tool called Smart Installer for Symbian devices •The expected availability is 1Q 2010 •A piece of code is to be packaged together with the Qt application targeted for Symbian devices (when creating the .sis file) •The Smart Installer will download OTA the needed Qt version to the handset if it is not already present
  42. 42. The facts •Qt applications on Symbian are Symbian applications • Platform security and signing rules apply •Symbian UI based on Avkon will disappear soon – All Symbian applications will be rewritten using Qt! •Qt is supported in S60 3rd Edition FP1 onwards • Will be preinstalled in in Symbian^3 based devices in 2010 * •Distribute your Qt for Symbian applications with Qt 4.6.1 and smart installer (both available early 2010) * according to Symbian Foundation announcements
  43. 43. Developer resources • • For general questions there is a public 'discussion board monitored by Forum Nokia experts. • Qt main page • Qt Mobility project • Symbian SDKs • Qt for Symbian • Qt main page in Forum Nokia • Qt 4.6 • Qt for Maemo preview • Forum Nokia Library • Qt 4.6 online documentation • Symbian and Qt examples mapping to Qt Mobility APIs • • Qt 4.6 mobile demos on Maemo and Symbian • Ancestor of Mobility Project
  44. 44. Qt for Maemo 44
  45. 45. Maemo - Why should I care? • Coming from desktop? • The importance of mobile clients is widely recognized already – not gonna sell it here… • With Qt and Mobility APIs you can easily extend your application to cover smartphone features and utilize f.ex location, contacts, messaging etc. • With maemo and Symbian you can reach more than 100 million devices with your Qt application – already with Qt 4.6! • Maemo is and will be very important for Nokia – get a head start to maemo which we believe will be one of the most interesting platforms! • With Ovi store you have a ready channel to sell your application to hundreds of millions of users
  46. 46. From geek(ish) gizmos to mainstream devices • 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 (i.e standard smartphone) • 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 •
  47. 47. Maemo 5 • Linux based operating system for N900 • Optimized for pocket sized devices and finger use • Panorama desktop N900 • Multitasking with dashboard TI OMAP 3 processor, ARM Cortex-A8 600 MHz • New UI style HSPA/3G support – online anywhere 3G connectivity • Animated UI High definition camera support (integrated Image • Compositing window manager Signal Processor) 5 megapixel camera (2584 × 1938 pixels) • Accelerated graphics with OpenGL-ES2 HW acceleration for OpenGL ES 2.0 3.5 inch touch-screen 800 × 480 pixel resolution High-speed USB 2.0 Integrated GPS with A-GPS WLAN IEEE 802.11b/g 32 GB internal storage
  48. 48. Hildon UI – simple and customizable Status bar indicating device state Consistent controls across applications Taskbar to navigate applications Widgets and RSS feeds for up-to-date information
  49. 49. Qt for maemo • Maemo is and will be very important platform for Nokia • Qt 4.6 will be officially supported on maemo 5 • Maemo 6 is built on Qt • With Qt and mobility APIs you can make true mobile applications that work accross different platforms • Develop now! • How to get information when official releases are coming • Distribute when Qt 4.6 for maemo is ready - Q1 2010! Slides will be available in
  50. 50. N900 apps for Ovi
  51. 51. Developer Resources • • _in_Fremantle • •Maemo 5 documentation •Qt for Maemo developers guide : beta e •Targeting to get Qt Creator support for Maemo development!
  52. 52. Qt Mobility project 52
  53. 53. ! 2010: Qt Mobility Project What is it? – New Qt APIs enabling cross-platform mobile application development and service access What is the value? – Easier to create applications targeting many platforms – Reuse of code between the mobile platforms – Bring existing Qt developers as well as new ideas – Bring Symbian and Nokia developers to new platforms Supported Platforms - Symbian 3rd Ed FP1, Symbian 3rd Ed FP2, Symbian 5th Edition, Maemo, Windows CE, Windows XP/Vista, Linux, Mac OS X 53
  54. 54. 2010: Qt Mobility Project • Service Framework Launch, discover, and communicate with services Use services natively or through Javascript etc Control access to services • Context Framework Share context information between applications • Contacts API Access stored contacts or create new contacts • Location API Query current location API hides underlying Location source (GPS, Cell ID, etc) 54
  55. 55. ! 2010: Qt Mobility Project • System Information API Access to platform and/or device information Determine status of available resources • Bearer Management Manage available network connections Use the best available connection • Messaging API Send and receive a variety of message types • Multi-Media API Play and record audio/video 55
  56. 56. Mobility APIs per platform Maemo 5 support will be implemented as well!
  57. 57. More to come •There are still many enabler missing from Mobility • Sensors, Calendar, Telephony, … •Good things : • We’re bringing those in as well! • Even without these APIs you can access all the features of the device from Qt applications – as Qt applications are native you can use the OS specific APIs seamlessly within your Qt application •Stay tuned : •Provide your input for us : • •Remember the contest :
  58. 58. Taking Mobility APIs into usage on Symbian •Prerequisites : Qt for Symbian 4.6.0 installed on your development environment and device •Download and extract the Mobility package symbian •Copy the zip file to your Symbian SDK install.txt install_to_SDK • next to epoc32 folder •Configure the examples install_to_device Qt_Mobility_tech_preview.sis • configure.bat -examples •Build the examples and install to your device • cd examples • qmake [example].pro • make release-gcce • createpackage -i [example]_template.pkg release-gcce
  59. 59. Still up to more? 59
  60. 60. Our vision: Web into any application Now Web browser Web Runtime widget Now Open source WebKit is the foundation and common engine Widget + Now platform services Native application Next
  61. 61. Interact with Web Services • QtWebKit allows • Intuitive use of network resources • Exposing QWidget to HTML and QObject to JavaScript • Calling JavaScript from Qt and vice versa JS Qt OS specific APIs • Based on the Open Source WebKit engine
  62. 62. QWebView and QWebPage classes QWebView inherited from QWidget • Renders the content in QWebPage QWebView • Easy to embed wherever widget could be used QWebPage provides access to the document QWebPage structure in a page • Frames QWebFrame • Navigation history • Undo/redo stack for editable content Each QWebpage has one QWebFrame object as its main frame HTML documents can be nested using frames QWebView *view = new QWebView( parent ); view->load(QUrl(“”)); view->show();
  63. 63. Hybrid - combining the best of both worlds So you can run JS and HTML inside Qt application… What are the differences compared to a WRT widget? WRT Widget running on top of Qt application webkit Webkit QWebView running webkit Widgets HTML, CSS, Same HTML, CSS, JavaScript JavaScript Platform Services Native APIs Native APIs incl. Qt Mobility APIs Platform Services “Platform implementation Services” implementation
  64. 64. Key selling points in the hybrid approach • No feature restrictions! • Asset is protected – widgets are essentially open source • Works where ever Qt is available (symbian, maemo, windows, linux, mac, …), huge install base • Utilize web developer skills to make native applications • Qt native skills to implement”platform services” • Qt script generator • Mixing native and HTML UI • Interesting scenarious coming f.ex with Orbit widgets • Tools might be problematic (migrating web tools and native (Qt Creator)) • We can make hybrid approach even for compelling by providing ready framework where existing widgets can be plugged in • We are working on a framework to make this as easy as possible for web developers
  65. 65. Still up to more? 66
  66. 66. 2010: Qt Kinetic Project • Allow developers and designers to create flexible and visually appealing user interfaces using intuitive code or GUI designer • Key benefits – Declarative UI programming – Encourages developer-designer collaboration – Faster time-to-market with rapid prototyping – Expressive language (QML) – Exposes Qt objects and properties via JavaScript – Transitions and manipulations 67 67
  67. 67. 2010: Declarative UI Designer • Utilizing declarative UI technology • For programmers and designers, visual and code • Target mobile/embedded and desktop platforms • Create state-of-the-art, visually appealing user interfaces 68
  68. 68. Flexible and Visual Appealing UI? QML – Express a UI the way we think about it: components, views, states, transitions, animations and effects – Connect the UI to real data and back-end functionality – Everything should be fast and easy – It’s so simply and intuitive that designers and developers can work directly together QML is a new declarative language extension to Qt 69
  69. 69. QML Hierarchy • QML is fundamentally a hierarchy of of elements with properties – Single root element – Parent reference • Can bind element properties • Think of a scene graph 70
  70. 70. QML Element Types 71
  71. 71. 72 Declarative UI demo
  72. 72. We’ll be making it easy for you • All you need is Qt Creator – no SDKs ;) • Integrated with Remote Device Access (RDA) - you don’t even need a device ;) • • No promises here about dates or months yet… Combine hybrid framework with this one – isn’t it creepy how easy we can make it for you?
  73. 73. To conclude What the h e ck was the dude talki ng about? 75
  74. 74. Qt Qt SDK Qt modular class library Qt development tools Qt Creator Cross‐platform IDE Core XML GUI Multimedia WebKit Database Qt Designer Qt Assistant Graphics View Network  GUI designer Help reader Scripting Unit Tests OpenGL Benchmarking qmake Qt Linguist Cross‐Platform  I18N Toolset Build Tool Cross‐platform support Windows Mac OS X Linux/X11 eLinux Win CE Symbian Maemo Chipsets *Coming soon 76
  75. 75. Qt is… •Easy to learn •Productive •Supported in several platforms •Enables using web asset and skills in native applications •Qt applications have no feature restrictions •Nokia will be doing it’s own applications on top of Qt •Get started today : •Demo videos of Qt running in maemo and Symbian in
  76. 76. Nokia + Ovi Developer Story | 78 Nokia developer offering, redefined 1= Nokia cross-platform SDKs that you’ll love 2= WRT & Ovi APIs. Amazing features in your web apps 3= Ovi Store. Sell your app to hundreds of millions
  77. 77. Qt Development Chain - Maemo & Symbian Distribution Ovi Store Certification Symbian signed N/A IDEs •Qt Creator •Qt Creator •Carbide Common offering •Mobility APIS •Mobility APIs SDKs Qt for Symbian platform Qt for maemo platform & Plugins Symbian SDKs Maemo SDKs Symbian Maemo
  78. 78. Be the “Qtst” – Forum Nokia Code Competition Grand Prize Winner will receive a trip to the upcoming Nokia 2010 Developer Summit to be held in San Francisco, USA during June 9th and 10th! Top winners will also be selected to receive nominations as Forum Nokia Champion program as well as getting the coolest Nokia devices free of charge! For details go to Entries to the contest will be open from Dec 7th, 2009 until January 31, 2010. Register by latest 30th of December 2009! THANK YOU!
  79. 79. Thank you! m Slides will be available in