KEMBAR78
Software development with qt | PDF
Software Development with Qt



Andreas Jakl
Senior Technical Consultant
Forum Nokia

                               13 April, 2010
13.04.2010   © 2010 Nokia   2




Qt in a Nutshell
                   Qt is a class library for platform
                   independent development of
                   graphical user interfaces based
                   on C++.

                   The framework also includes
                   XML, databases, multithreading,
                   network, internationalization,
                   3D, WebKit, multimedia, etc.
13.04.2010   © 2010 Nokia    3




Short History of Qt
      Focus on mobile platforms (Symbian, Maemo, MeeGo), dedicated mobility APIs
      Nokia purchases Trolltech, name changes to Qt Development Frameworks APIs
      Qt 4.0 – compatibility break, leads to new KDE 4 desktop
      Qtopia – platform for mobile phones & PDAs
      First public release through newsgroups (Qt 0.90)
           •   Dual licensing: commercial & free for open source
      Decided to go into business
           •   “Q” looked beautiful in Emacs font. “t” for toolkit
           •   Company : Quasar Technologies (later: Trolltech)
      Development started
           •   Cross platform GUI toolkit was needed                 Eirik Chambe-Eng             Haavard
                                                                            Nord
13.04.2010   © 2010 Nokia   4




Some Well-Known Customers




                       … and many, many more!
13.04.2010   © 2010 Nokia   5




Qt Licensing
• LGPL license
• Qt is completely free!
    – Unlike GPL, the LGPL:
        •   Allows using Qt for free in commercial, closed source apps

    – Complete development source code of Qt available
• Commercial version
    – Code changes to Qt source code don’t have to be shared
    – Included support options
13.04.2010   © 2010 Nokia   6




Platforms                                             Windows
                                                      Mac OS
                                                      Linux / X11
  C++                                                 Embedded Linux
                                                      Windows CE
                                                      Maemo / MeeGo
         Java                                         Symbian (S60)
        Python
         Ada
        Pascal     Maintained by
         Perl     Qt open source community.
         PHP     Not officially supported by Qt Development Frameworks.
13.04.2010   © 2010 Nokia   7




Mobile Development




                     Java ME
13.04.2010   © 2010 Nokia   10




Symbian and Qt
• Qt for Symbian:
     – Compatible to S60 3rd. Edition, FP1+ (Nokia N95, E71)
     – Install SDK for your device, or lowest denominator for devices you want
            to support with your product
             •   Info about system version of Nokia S60 devices:
                 http://www.forum.nokia.com/devices/
                                         Qt Compatibility

Series 60     Series 60     S60        S60           S60         S60      Symbian^2   Symbian^3      Symbian^4
 1st Ed.       2nd Ed.     3rd Ed.    3rd Ed.       3rd Ed.     5th Ed.
              (+ 3 FPs)                FP1           FP2           =
                                                              Symbian^1
© 2010 Nokia




Symbian and Qt
• Symbian^3 – Ready for Qt
   – Qt Pre-installed on devices
   – Ensures forward- and backward
      compatibility
© 2010 Nokia      12




Symbian and Qt
• Symbian^4: replaces S60 with Qt-based UI
• Components:
    – Uiemo (UI Extensions for Mobile, Orbit):
      extension library for Qt, 50+ UI elements
      tailored for mobile
    – Direct UI: new app framework based on Uiemo
• Availability:
    – End of 2010
                                                    Symbian^4 Concept Video
© 2010 Nokia   13




Maemo / MeeGo and Qt
• Maemo 5
   – GTK+ based UI
   – Qt pre-installed
   – Final Qt support: H1 2010 (4.6.2)
• MeeGo 1.0 N (formerly: Maemo 6)
   – Qt replaces GTK+
   – Multi-touch, gestures support
   – GTK and Clutter will stay in MeeGo
© 2010 Nokia   14




MeeGo and Qt
• Moblin (Intel) and Maemo (Nokia) merge to
   – New Linux distribution (Linux Foundation)
   – MeeGo UI toolkit based on Qt
   – GTK and Clutter included for application compatibility
© 2010 Nokia   15




Qt Architecture
• Qt uses native styles to draw UI
    – UI elements have original
      look & feel
    – Can be adapted by the developer
• Built on low level APIs of platform
    – No runtime!
• Cross-platform
    – Single source for multiple platforms
    – Only requires recompilation
© 2010 Nokia   16




Getting Started
 Install Qt SDK from qt.nokia.com
 Start Qt Creator UI
13.04.2010   © 2010 Nokia   17




Hello World Project
     main.cpp
      #include <QApplication>
      #include <QPushButton>

      int main(int argc, char *argv[])
      {
          QApplication app(argc, argv);
          QPushButton helloButton("Hello World");
          helloButton.resize(150, 50);
          helloButton.show();

           return app.exec();
      }
13.04.2010   © 2010 Nokia   18




Qt and C++
• Qt goes beyond C++
    – Seamless object communication
      (signals & slots)
    – Meta object system, featuring
      object properties and object trees
    – Contextual string translation for internationalization
• … but still works with standard C++ compilers
  on all platforms!
13.04.2010   © 2010 Nokia   19




Interactivity: Quit Hello World
• Add functionality to exit the Hello World example:
     QObject::connect(&helloButton, SIGNAL(clicked()),
                      &app, SLOT(quit()));

    – Button emits clicked() signal
    – Connected to QApplication::quit()
13.04.2010   © 2010 Nokia   20




Signals & Slots
• Signal
    – Emitted when a particular event occurs (e.g., clicked())
    – Qt widgets: predefined signals
    – Also create your own signals
• Slot
    – Function called in response to a signal
    – Qt widgets: predefined slots (e.g., quit())
    – Also create your own slots
• Connection signals  slots established by developer,
  handled by Qt framework
13.04.2010   © 2010 Nokia   21




Deploy
• Run your Qt application on all platforms!




                  Windows 7            Maemo 5           Symbian^1
                                                      (S60 5th Edition)
The Future of Qt
© 2010 Nokia   23




Qt Quick (Qt User Interface Creation Kit)
• Create UIs as a designer
    – Without C++ knowledge
    – Using visual tools
    – Module: Declarative UI
    – Based on QML language
      (extension to JavaScript)
    – Supported in Qt 4.7
    – http://blog.qt.nokia.com/2010/02/15/meet-qt-quick/
© 2010 Nokia   24




QML
• Describe UI by tree structure of property bindings
    – Properties dynamically evaluated
    – Communication through
                                                Rectangle {
      signals & slots                             width: 200
    – Bindings to C++ code possible               height: 200
                                                  color: "white"
    – Animate properties using states             Image {
                                                    source: "pics/logo.png"
      and transitions                               anchors.centerIn: parent
                                                  }
                                                }
© 2010 Nokia   25




UI Framework (Uiemo)
• Scene graph approach to the UI
• Optimized for
   – Graphics effects, 3D HW acceleration
   – Gestures, multi-touch, kinetics
• Adventurous?
   – It’s open source!
   – Symbian: http://qt.gitorious.org/uiemo
13.04.2010   © 2010 Nokia   26




Hybrid Applications
                      HTML App


                      Qt Web
                      Technology


                      Qt
13.04.2010   © 2010 Nokia   27




  Advantages of Hybrid Applications
                                         Web                                  Qt

                           HTML, CSS, JavaScript                     C++
                           Rapid development                         Full device access
                           Broad reach                               Powerful libraries



                                             Embed Qt UI elements into HTML page
                                               Access Qt objects from JavaScript
                                                  Trigger JavaScript from Qt
                                                        Shared storage
http://qt.nokia.com/forms/whitepapers/reg-whitepaper-hybrid
13.04.2010   © 2010 Nokia   28




Qt Mobility
• Qt: Desktop → Mobile
• Requires new APIs for
    – Sensors
    – Location
    – Messaging
    – etc.
• Qt Mobility: new cross-platform APIs for mobile use cases
    – Back-end implementation on all platforms where it makes sense
13.04.2010   © 2010 Nokia   29




Smart Installer
• Distribute Qt apps on Symbian devices
   – Qt not pre-installed on current phones
   – Solution:
      installation / update on demand
   – Package Smart Installer with your app
• Download
   – http://qt.nokia.com/developer/nokia-smart-installer-for-symbian
   – Final: H1 2010
© 2010 Nokia   30




Qt 4.7
         • Qt 4.7 Tech Preview: Available now!
             – Includes Qt Quick
             – Integrates first parts of Qt Mobility
             – Focus on performance
         • http://qt.nokia.com/developer/qt-roadmap
13.04.2010   © 2010 Nokia   31




Qt Books
           C++ GUI Programming with Qt 4 (2nd edition)
           Jasmin Blanchette, Mark Summerfield. Prentice Hall.
           Official book for Qt development. Good for looking things up or for
           enhancing your knowledge, average for learning from scratch.
           Status: Qt 4.3, 2008



           Foundations of Qt Development
           Johan Thelin. Apress.
           More in-depth and technically oriented explanation of Qt. Most
           other books are rather similar to the official documentation that
           you get for free with the SDK – this is different, and is therefore a
           good companion.
           Status: 2007
13.04.2010   © 2010 Nokia   32




Even More Information
        Qt for Symbian
        Editors: Frank H. P. Fitzek, Tommi Mikkonen, Tony Torp. Wiley.
        For Qt developers wanting to get started with development on the
        mobile Symbian platform, or the other way round.
        Status: Qt 4.6, April 2010



        Online: qt.nokia.com, www.forum.nokia.com, www.qtcentre.org
        Lots of documentation and examples installed with SDK
Thank You.

Software development with qt

  • 1.
    Software Development withQt Andreas Jakl Senior Technical Consultant Forum Nokia 13 April, 2010
  • 2.
    13.04.2010 © 2010 Nokia 2 Qt in a Nutshell Qt is a class library for platform independent development of graphical user interfaces based on C++. The framework also includes XML, databases, multithreading, network, internationalization, 3D, WebKit, multimedia, etc.
  • 3.
    13.04.2010 © 2010 Nokia 3 Short History of Qt Focus on mobile platforms (Symbian, Maemo, MeeGo), dedicated mobility APIs Nokia purchases Trolltech, name changes to Qt Development Frameworks APIs Qt 4.0 – compatibility break, leads to new KDE 4 desktop Qtopia – platform for mobile phones & PDAs First public release through newsgroups (Qt 0.90) • Dual licensing: commercial & free for open source Decided to go into business • “Q” looked beautiful in Emacs font. “t” for toolkit • Company : Quasar Technologies (later: Trolltech) Development started • Cross platform GUI toolkit was needed Eirik Chambe-Eng Haavard Nord
  • 4.
    13.04.2010 © 2010 Nokia 4 Some Well-Known Customers … and many, many more!
  • 5.
    13.04.2010 © 2010 Nokia 5 Qt Licensing • LGPL license • Qt is completely free! – Unlike GPL, the LGPL: • Allows using Qt for free in commercial, closed source apps – Complete development source code of Qt available • Commercial version – Code changes to Qt source code don’t have to be shared – Included support options
  • 6.
    13.04.2010 © 2010 Nokia 6 Platforms Windows Mac OS Linux / X11 C++ Embedded Linux Windows CE Maemo / MeeGo Java Symbian (S60) Python Ada Pascal Maintained by Perl Qt open source community. PHP Not officially supported by Qt Development Frameworks.
  • 7.
    13.04.2010 © 2010 Nokia 7 Mobile Development Java ME
  • 8.
    13.04.2010 © 2010 Nokia 10 Symbian and Qt • Qt for Symbian: – Compatible to S60 3rd. Edition, FP1+ (Nokia N95, E71) – Install SDK for your device, or lowest denominator for devices you want to support with your product • Info about system version of Nokia S60 devices: http://www.forum.nokia.com/devices/ Qt Compatibility Series 60 Series 60 S60 S60 S60 S60 Symbian^2 Symbian^3 Symbian^4 1st Ed. 2nd Ed. 3rd Ed. 3rd Ed. 3rd Ed. 5th Ed. (+ 3 FPs) FP1 FP2 = Symbian^1
  • 9.
    © 2010 Nokia Symbianand Qt • Symbian^3 – Ready for Qt – Qt Pre-installed on devices – Ensures forward- and backward compatibility
  • 10.
    © 2010 Nokia 12 Symbian and Qt • Symbian^4: replaces S60 with Qt-based UI • Components: – Uiemo (UI Extensions for Mobile, Orbit): extension library for Qt, 50+ UI elements tailored for mobile – Direct UI: new app framework based on Uiemo • Availability: – End of 2010 Symbian^4 Concept Video
  • 11.
    © 2010 Nokia 13 Maemo / MeeGo and Qt • Maemo 5 – GTK+ based UI – Qt pre-installed – Final Qt support: H1 2010 (4.6.2) • MeeGo 1.0 N (formerly: Maemo 6) – Qt replaces GTK+ – Multi-touch, gestures support – GTK and Clutter will stay in MeeGo
  • 12.
    © 2010 Nokia 14 MeeGo and Qt • Moblin (Intel) and Maemo (Nokia) merge to – New Linux distribution (Linux Foundation) – MeeGo UI toolkit based on Qt – GTK and Clutter included for application compatibility
  • 13.
    © 2010 Nokia 15 Qt Architecture • Qt uses native styles to draw UI – UI elements have original look & feel – Can be adapted by the developer • Built on low level APIs of platform – No runtime! • Cross-platform – Single source for multiple platforms – Only requires recompilation
  • 14.
    © 2010 Nokia 16 Getting Started Install Qt SDK from qt.nokia.com Start Qt Creator UI
  • 15.
    13.04.2010 © 2010 Nokia 17 Hello World Project main.cpp #include <QApplication> #include <QPushButton> int main(int argc, char *argv[]) { QApplication app(argc, argv); QPushButton helloButton("Hello World"); helloButton.resize(150, 50); helloButton.show(); return app.exec(); }
  • 16.
    13.04.2010 © 2010 Nokia 18 Qt and C++ • Qt goes beyond C++ – Seamless object communication (signals & slots) – Meta object system, featuring object properties and object trees – Contextual string translation for internationalization • … but still works with standard C++ compilers on all platforms!
  • 17.
    13.04.2010 © 2010 Nokia 19 Interactivity: Quit Hello World • Add functionality to exit the Hello World example: QObject::connect(&helloButton, SIGNAL(clicked()), &app, SLOT(quit())); – Button emits clicked() signal – Connected to QApplication::quit()
  • 18.
    13.04.2010 © 2010 Nokia 20 Signals & Slots • Signal – Emitted when a particular event occurs (e.g., clicked()) – Qt widgets: predefined signals – Also create your own signals • Slot – Function called in response to a signal – Qt widgets: predefined slots (e.g., quit()) – Also create your own slots • Connection signals  slots established by developer, handled by Qt framework
  • 19.
    13.04.2010 © 2010 Nokia 21 Deploy • Run your Qt application on all platforms! Windows 7 Maemo 5 Symbian^1 (S60 5th Edition)
  • 20.
  • 21.
    © 2010 Nokia 23 Qt Quick (Qt User Interface Creation Kit) • Create UIs as a designer – Without C++ knowledge – Using visual tools – Module: Declarative UI – Based on QML language (extension to JavaScript) – Supported in Qt 4.7 – http://blog.qt.nokia.com/2010/02/15/meet-qt-quick/
  • 22.
    © 2010 Nokia 24 QML • Describe UI by tree structure of property bindings – Properties dynamically evaluated – Communication through Rectangle { signals & slots width: 200 – Bindings to C++ code possible height: 200 color: "white" – Animate properties using states Image { source: "pics/logo.png" and transitions anchors.centerIn: parent } }
  • 23.
    © 2010 Nokia 25 UI Framework (Uiemo) • Scene graph approach to the UI • Optimized for – Graphics effects, 3D HW acceleration – Gestures, multi-touch, kinetics • Adventurous? – It’s open source! – Symbian: http://qt.gitorious.org/uiemo
  • 24.
    13.04.2010 © 2010 Nokia 26 Hybrid Applications HTML App Qt Web Technology Qt
  • 25.
    13.04.2010 © 2010 Nokia 27 Advantages of Hybrid Applications Web Qt HTML, CSS, JavaScript C++ Rapid development Full device access Broad reach Powerful libraries Embed Qt UI elements into HTML page Access Qt objects from JavaScript Trigger JavaScript from Qt Shared storage http://qt.nokia.com/forms/whitepapers/reg-whitepaper-hybrid
  • 26.
    13.04.2010 © 2010 Nokia 28 Qt Mobility • Qt: Desktop → Mobile • Requires new APIs for – Sensors – Location – Messaging – etc. • Qt Mobility: new cross-platform APIs for mobile use cases – Back-end implementation on all platforms where it makes sense
  • 27.
    13.04.2010 © 2010 Nokia 29 Smart Installer • Distribute Qt apps on Symbian devices – Qt not pre-installed on current phones – Solution: installation / update on demand – Package Smart Installer with your app • Download – http://qt.nokia.com/developer/nokia-smart-installer-for-symbian – Final: H1 2010
  • 28.
    © 2010 Nokia 30 Qt 4.7 • Qt 4.7 Tech Preview: Available now! – Includes Qt Quick – Integrates first parts of Qt Mobility – Focus on performance • http://qt.nokia.com/developer/qt-roadmap
  • 29.
    13.04.2010 © 2010 Nokia 31 Qt Books C++ GUI Programming with Qt 4 (2nd edition) Jasmin Blanchette, Mark Summerfield. Prentice Hall. Official book for Qt development. Good for looking things up or for enhancing your knowledge, average for learning from scratch. Status: Qt 4.3, 2008 Foundations of Qt Development Johan Thelin. Apress. More in-depth and technically oriented explanation of Qt. Most other books are rather similar to the official documentation that you get for free with the SDK – this is different, and is therefore a good companion. Status: 2007
  • 30.
    13.04.2010 © 2010 Nokia 32 Even More Information Qt for Symbian Editors: Frank H. P. Fitzek, Tommi Mikkonen, Tony Torp. Wiley. For Qt developers wanting to get started with development on the mobile Symbian platform, or the other way round. Status: Qt 4.6, April 2010 Online: qt.nokia.com, www.forum.nokia.com, www.qtcentre.org Lots of documentation and examples installed with SDK
  • 31.