SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
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.

Mais conteúdo relacionado

Mais procurados

2. the aegis story building an accessible application
2. the aegis story   building an accessible application2. the aegis story   building an accessible application
2. the aegis story building an accessible application
AEGIS-ACCESSIBLE Projects
 
Google Android Naver 1212
Google Android Naver 1212Google Android Naver 1212
Google Android Naver 1212
Yoojoo Jang
 
FOSDEM 2012 - OpenNebula Project
FOSDEM 2012 - OpenNebula ProjectFOSDEM 2012 - OpenNebula Project
FOSDEM 2012 - OpenNebula Project
OpenNebula Project
 

Mais procurados (20)

Nokia Qt SDK in action - Qt developer days 2010
Nokia Qt SDK in action - Qt developer days 2010Nokia Qt SDK in action - Qt developer days 2010
Nokia Qt SDK in action - Qt developer days 2010
 
Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...
Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...
Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...
 
Qt - for stack overflow developer conference
Qt - for stack overflow developer conferenceQt - for stack overflow developer conference
Qt - for stack overflow developer conference
 
2. the aegis story building an accessible application
2. the aegis story   building an accessible application2. the aegis story   building an accessible application
2. the aegis story building an accessible application
 
Meet Qt
Meet QtMeet Qt
Meet Qt
 
KDE Plasma for Mobile Phones
KDE Plasma for Mobile PhonesKDE Plasma for Mobile Phones
KDE Plasma for Mobile Phones
 
Qt Licensing Explained
Qt Licensing ExplainedQt Licensing Explained
Qt Licensing Explained
 
Google Android Naver 1212
Google Android Naver 1212Google Android Naver 1212
Google Android Naver 1212
 
WinJS, Apache Cordova & NFC - HTML5 apps for Android and Windows Phone
WinJS, Apache Cordova & NFC - HTML5 apps for Android and Windows PhoneWinJS, Apache Cordova & NFC - HTML5 apps for Android and Windows Phone
WinJS, Apache Cordova & NFC - HTML5 apps for Android and Windows Phone
 
Smartphone Behavior On A Featurephone Budget
Smartphone Behavior On A Featurephone BudgetSmartphone Behavior On A Featurephone Budget
Smartphone Behavior On A Featurephone Budget
 
Intel AppUp™ SDK Suite 1.2 for MeeGo
Intel AppUp™ SDK Suite 1.2 for MeeGoIntel AppUp™ SDK Suite 1.2 for MeeGo
Intel AppUp™ SDK Suite 1.2 for MeeGo
 
MeeGo Overview DeveloperDay Munich
MeeGo Overview DeveloperDay MunichMeeGo Overview DeveloperDay Munich
MeeGo Overview DeveloperDay Munich
 
Writing applications for multiple stores on the WeTab
Writing applications for multiple stores on the WeTabWriting applications for multiple stores on the WeTab
Writing applications for multiple stores on the WeTab
 
Android application development
Android application developmentAndroid application development
Android application development
 
Octopod Mobile Development Platform for rapid cross-platform Enterprise IT Mo...
Octopod Mobile Development Platform for rapid cross-platform Enterprise IT Mo...Octopod Mobile Development Platform for rapid cross-platform Enterprise IT Mo...
Octopod Mobile Development Platform for rapid cross-platform Enterprise IT Mo...
 
Nicholas Foo
Nicholas FooNicholas Foo
Nicholas Foo
 
FOSDEM 2012 - OpenNebula Project
FOSDEM 2012 - OpenNebula ProjectFOSDEM 2012 - OpenNebula Project
FOSDEM 2012 - OpenNebula Project
 
Starting Development for Nokia N9
Starting Development for Nokia N9Starting Development for Nokia N9
Starting Development for Nokia N9
 
The Roadmap: Next Generation Qt
The Roadmap: Next Generation QtThe Roadmap: Next Generation Qt
The Roadmap: Next Generation Qt
 
Intel AppUp Webinar Italiano General Information
Intel AppUp Webinar Italiano General InformationIntel AppUp Webinar Italiano General Information
Intel AppUp Webinar Italiano General Information
 

Semelhante a Software development with qt

Mp25: Mobile dev with QT and Python for the Notorious N9
Mp25: Mobile dev with QT and Python for the Notorious N9Mp25: Mobile dev with QT and Python for the Notorious N9
Mp25: Mobile dev with QT and Python for the Notorious N9
Montreal Python
 
Qt Tutorial - Part 1
Qt Tutorial - Part 1Qt Tutorial - Part 1
Qt Tutorial - Part 1
rmitc
 
Nicholas Foo
Nicholas FooNicholas Foo
Nicholas Foo
fndc
 

Semelhante a Software development with qt (20)

Qt quick (qml)
Qt quick (qml)Qt quick (qml)
Qt quick (qml)
 
Andreas Jakl Software Development on Nokia Deviceswith Qt
Andreas Jakl Software Development on Nokia Deviceswith QtAndreas Jakl Software Development on Nokia Deviceswith Qt
Andreas Jakl Software Development on Nokia Deviceswith Qt
 
Meego Italian Day 2011 – Andrea Grandi
Meego Italian Day 2011 – Andrea GrandiMeego Italian Day 2011 – Andrea Grandi
Meego Italian Day 2011 – Andrea Grandi
 
Nfc developers nokia mit event 12 13 10
Nfc developers nokia mit event 12 13 10Nfc developers nokia mit event 12 13 10
Nfc developers nokia mit event 12 13 10
 
Treinamento Qt básico - aula I
Treinamento Qt básico - aula ITreinamento Qt básico - aula I
Treinamento Qt básico - aula I
 
Welcome - Introduzione - Burkhard Stubert
Welcome - Introduzione - Burkhard StubertWelcome - Introduzione - Burkhard Stubert
Welcome - Introduzione - Burkhard Stubert
 
Qt as Developer Platform @ MoMo Tallinn 11.04.11
Qt as Developer Platform @ MoMo Tallinn 11.04.11Qt as Developer Platform @ MoMo Tallinn 11.04.11
Qt as Developer Platform @ MoMo Tallinn 11.04.11
 
了解 Qt
了解 Qt了解 Qt
了解 Qt
 
Qt Technical Presentation
Qt Technical PresentationQt Technical Presentation
Qt Technical Presentation
 
Mp25: Mobile dev with QT and Python for the Notorious N9
Mp25: Mobile dev with QT and Python for the Notorious N9Mp25: Mobile dev with QT and Python for the Notorious N9
Mp25: Mobile dev with QT and Python for the Notorious N9
 
BeTrains for Qt
BeTrains for QtBeTrains for Qt
BeTrains for Qt
 
Qt Tutorial - Part 1
Qt Tutorial - Part 1Qt Tutorial - Part 1
Qt Tutorial - Part 1
 
Qt
QtQt
Qt
 
Nicholas Foo
Nicholas FooNicholas Foo
Nicholas Foo
 
qt-project.org and Qt 5
qt-project.org and Qt 5qt-project.org and Qt 5
qt-project.org and Qt 5
 
Trolltech: Qtopia introduction at Overtheair (London 2008)
Trolltech: Qtopia introduction at Overtheair (London 2008)Trolltech: Qtopia introduction at Overtheair (London 2008)
Trolltech: Qtopia introduction at Overtheair (London 2008)
 
Qt everywhere
Qt everywhereQt everywhere
Qt everywhere
 
Qt S60 Technical Presentation Fn Stripped
Qt S60 Technical Presentation Fn StrippedQt S60 Technical Presentation Fn Stripped
Qt S60 Technical Presentation Fn Stripped
 
Qt introduction
Qt introductionQt introduction
Qt introduction
 
Qt For Maemo - getting to the fast-lane (v2)
Qt For Maemo - getting to the fast-lane (v2)Qt For Maemo - getting to the fast-lane (v2)
Qt For Maemo - getting to the fast-lane (v2)
 

Mais de NokiaAppForumBulgaria

Mais de NokiaAppForumBulgaria (6)

Mobile user experience intro
Mobile user experience   introMobile user experience   intro
Mobile user experience intro
 
Ovi store ppt_serbia
Ovi store ppt_serbiaOvi store ppt_serbia
Ovi store ppt_serbia
 
Ovi store ppt_serbia
Ovi store ppt_serbiaOvi store ppt_serbia
Ovi store ppt_serbia
 
Intro to forum_nokia_sofia_13042010
Intro to forum_nokia_sofia_13042010Intro to forum_nokia_sofia_13042010
Intro to forum_nokia_sofia_13042010
 
Java me introduction
Java me   introductionJava me   introduction
Java me introduction
 
Basics of web runtime
Basics of web runtimeBasics of web runtime
Basics of web runtime
 

Último

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Último (20)

[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 

Software development with qt

  • 1. Software Development with Qt 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 Symbian and 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)
  • 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