SlideShare une entreprise Scribd logo
1  sur  30
Development of Cross
Platform Apps using
Qyoto and Qt
Jeff Alstadt
ABOUT CENTARE
         fast. forward. thinking.

 At Centare, every team member:
   Thinks strategically
   Solves complex problems
   Creates scalable solutions
   Is passionate about what we do
OF NOTE
 Agile / ALM / Mobile / Cloud
 Microsoft
     2011 Partner of the Year Finalist
     ALM Gold Competency
     Azure Circle
 Apple / Android / Windows Phone
     iOS, Java, C#, Silverlight/XAML
     Scrum.org Partner
     Certified Professional Scrum Trainers
Good Morning
Why Qt and why Qyoto
AGENDA

         GETTING STARTED WITH Qt
         and Qyoto
BUT ISNT QT DEAD?
 Quite the opposite, it is living strong.
 Qt is being used by 450,000 developers in 70
 industries
 Qt increases productivity by 70% with reduced
 development costs of 75%
 These guys are using Qt:
WHAT IS QT
  What is Qt?
  How is Qt Cross-Platform?
  How do Qyoto and Qt work
  together?
  How can I use Qyoto in my apps?
WHAT IS QT?
 Qt is a cross-platform UI framework that was
 developed by Trolltech, later acquired by Nokia
 for creating UIs that can run on the Mac, Linux
 and Windows platform
 Qt utilizes a moc compiler known as the Meta
 Object Compiler with several macros to provide
 the Qt specifics of the Qt language
THE FOUNDERS OF QT
 Haavard Nord and Eirik Chambe-Eng founded
 Qt with its initial development in 1991.
 The toolkit was called Qt becuase the letter Q
 looked appealing in Haavard‘s Emacs font and
 “t“ was inspired by Xt, the X toolkit
GETTING STARTED WITH QT CREATOR




  Qt Creator is the cross-platform developer IDE
  It has a C++ compiler support built in, Qt centric UI designer
  tools, and solid debugger. Works on all three platforms including
  Mac, Linux and Windows
WHAT IS QYOTO?
 Qyoto is a C# language binding for Qt.
 It is not officially supported by Nokia or Digia
 It is an open source community driven project
 with a lot of the work coming from KDE
 contributors
 The top contributors of Kyoto are Arno Rehn, Ian
 Moore, and Dimitri Dobrev
CONCEPTS OF QT DESIGN
 Signals and Slots
 Qt Property System
 Qt Event System
 Using Model View in Qt
SIGNALS AND SLOTS
     A MEANS TO COMMUNICATE DATA
 Signal                        Specific concept in Qt
    Creates the construct to   every Qt developer needs
                               to know
                               Type safe
                               Decoupled
                               Objects inherited from
                               QObject will only receive
                               the signal notifcations
                               connect connects the
                               object signal to the
                               respective slot
SHOW ME THE CODE:
SHOW ME THE C# CODE
[Q_OBJECT]
public class Counter
{
          public Counter()
          {}
          private int m_value;

         [Q_SLOT]
         public void setValue(int value)
         {
           if ( m_value != value)
           {
               m_value = value;
               emit valueChanged(value);
           }
         }
}
QT PROPERTY SYSTEM
The Qt system provides a
means to set any property in
the Qt Meta-Object System

The Qt solution works with
any standard C++ compiler
Qt supports
Q_PROPERTY is a macro that
is used to declare property

This declaration must be
done inside a QObject
QT EVENT SYSTEM
 An event is an object or a set of objects
 derived from the abstract class QEvent
 Events represent things that have happened
 either within an application or as a result of
 outside activity that the application needs to
 know about
 Events are recieved and handled by instance
 of a derived QObject class
LIST OF COMMON EVENT TYPES
 QResizeEvent (Window Resizing)
 QPaintEvent (Window Repainting)
 QMouseEvent (Mouse Input)
 QKeyEvent    (Keyboard Input)
 QCloseEvent (Window close)
SENDING EVENTS
 In Qt, we can utilize the QCoreApplication to create and send our
 own custom events.
 To do this, we utilize sendEvent() and postEvent().
    sendEvent() processes the event immediatly.
    postEvent() posts the event on queue for later dispatch When Qt‘s
    main event loop runs, it will then dispatch all posted events.
 To create a custom Qt Event type, simpily subclass your event from
 QEvent and ensure it has an event number that is greater than
 QEvent::User (1000 presently in 4.8)
 For all events, check here
USING MODEL VIEW IN QT
 Qt has an advanced Model View archictecture concept
 that was inspired from the MVC approach
 Instead Qt utilizes a delegate instead of a controller
 The delegate is used to provide a fine control over how
 items are rendered and edited
 For Qt specific views, Qt provides the appropriate
 delegate for that view
COMMON PREDEFINED QT MODELS
 QStringListModel
 QStandardItemModel
 QDirModel
 QSqlQueryModel
 QSqlTableModel
 QSqlRelationalTableModel
 QSortFilterProxyModel
GREAT HOW DO I GET A ROCKIN‘ WITH
QYOTO
 To set up Qyoto you will need a fresh Linux install
 of your favorite Linux distro (I chose Ubuntu)
 Next you will need to download and install the Qt
 SDK, Mono, MonoDevelop, Gtk2.0, QScintella 2.0,
 Phonon lib, smoke gen
 My blog has more details how to set up your box.
QYOTO DEMO
 Overview of using mono develop with qyoto
 Will be shown on Linux
QT IN MOBILE
 Qt on Android
 Qt on iOS
QT ON ANDROID
 The Necessitas project is a community driven
 lighthouse based port of Qt to Android
 It has a plugin for Qt Creator to do Android
 development
 An installer application for Android called
 Ministro exists
   Ministro is responsible for downloading the Qt
   libraries specific to that Android device
QT ON IOS
 The Qt Lighthouse project was an initiative to
 get Qt running on the iOS platforms.
 It has had success, and is being integrated
 with Qt 5.0
ONWARD TO QT 5
 Qt 5 brings on a lot of new changes.
    QML plays a bigger role in UI design
    JavaScript will be heavily used over C++
 Its objectives are
    Make better use of the GPU, allowing you to create smooth (and
    accelerated) graphics performance even with limited resources
    Making your creation of advanced applications and UIs easier
    and faster (with QML and Javascript)
    Make apps connected to the web be as powerful as possible, i.e.
    to embed and power up web content and services into any Qt
    app
    Reduce the complexity and amount of code required to
    maintain and implement a port
VISION FOR QT 5
 “Qt 5 should be the foundation for a new way
 of developing applications. While offering all
 of the power of native Qt using C++, the focus
 should shift to a model, where C++ is mainly
 used to implement modular backend
 functionality for Qt Quick” – Lars Knoll, Qt
 Project
QT 5 ARCHITECTURE CHANGES
 Rearchitecture of the graphics stack
    QtQuick and QML Scenegraph will be the center of the new graphics
    architecture
    QPainter will still be available
    Qt 5 will require OpenGL 2.0
    Qwidgets will be layered on top of the scene graph
 Qt ports will be based on Lighthouse
    Lighthouse provides a better windows abstract system
 Modular repository structure
    Speeds up the integration process of contributions to the Qt
    framework
 Seperation of all QWidget related functionality into its own library
    QML will be the UI defacto, where QWidget will be there to support
    older Qt apps
YOUR NAME
YOUR TITLE
SECOND TITLE LINE, IF NEEDED

SITE: www.centare.comom
EMAIL: first.last@centare.com
TWITTER: @myhandle
BLOG: www.ifyouhaveone.com
LINKEDIN: /yourhandle

Contenu connexe

Tendances

Meet Qt 6.0
Meet Qt 6.0 Meet Qt 6.0
Meet Qt 6.0
Qt
 

Tendances (20)

Targeting Android with Qt
Targeting Android with QtTargeting Android with Qt
Targeting Android with Qt
 
Introduction to Qt programming
Introduction to Qt programmingIntroduction to Qt programming
Introduction to Qt programming
 
Qt for S60
Qt for S60Qt for S60
Qt for S60
 
Intro to gui, cross platform and qt
Intro to gui, cross platform and qtIntro to gui, cross platform and qt
Intro to gui, cross platform and qt
 
Qt for beginners part 5 ask the experts
Qt for beginners part 5   ask the expertsQt for beginners part 5   ask the experts
Qt for beginners part 5 ask the experts
 
Optimizing Performance in Qt-Based Applications
Optimizing Performance in Qt-Based ApplicationsOptimizing Performance in Qt-Based Applications
Optimizing Performance in Qt-Based Applications
 
How to keep Eclipse on the bleeding edge in the Linux world
How to keep Eclipse on the bleeding edge in the Linux worldHow to keep Eclipse on the bleeding edge in the Linux world
How to keep Eclipse on the bleeding edge in the Linux world
 
Qt Multiplatform development
Qt Multiplatform developmentQt Multiplatform development
Qt Multiplatform development
 
Meet Qt
Meet QtMeet Qt
Meet Qt
 
Qt Programming on TI Processors
Qt Programming on TI ProcessorsQt Programming on TI Processors
Qt Programming on TI Processors
 
Cutest technology of them all - Forum Nokia Qt Webinar December 2009
Cutest technology of them all - Forum Nokia Qt Webinar December 2009Cutest technology of them all - Forum Nokia Qt Webinar December 2009
Cutest technology of them all - Forum Nokia Qt Webinar December 2009
 
Introduction to Qt Creator
Introduction to Qt CreatorIntroduction to Qt Creator
Introduction to Qt Creator
 
Software Development Best Practices: Separating UI from Business Logic
Software Development Best Practices: Separating UI from Business LogicSoftware Development Best Practices: Separating UI from Business Logic
Software Development Best Practices: Separating UI from Business Logic
 
Qt 5 - C++ and Widgets
Qt 5 - C++ and WidgetsQt 5 - C++ and Widgets
Qt 5 - C++ and Widgets
 
Qt 6.2 lts vs. qt 5.15 the big feature parity comparison
Qt 6.2 lts vs. qt 5.15 the big feature parity comparisonQt 6.2 lts vs. qt 5.15 the big feature parity comparison
Qt 6.2 lts vs. qt 5.15 the big feature parity comparison
 
KDE Plasma for Mobile Phones
KDE Plasma for Mobile PhonesKDE Plasma for Mobile Phones
KDE Plasma for Mobile Phones
 
Creating Slick User Interfaces With Qt
Creating Slick User Interfaces With QtCreating Slick User Interfaces With Qt
Creating Slick User Interfaces With Qt
 
Using Multi-Touch and Gestures with Qt
Using Multi-Touch and Gestures with QtUsing Multi-Touch and Gestures with Qt
Using Multi-Touch and Gestures with Qt
 
Meet Qt 6.2 LTS - Ask Us Anything!
Meet Qt 6.2 LTS - Ask Us Anything!Meet Qt 6.2 LTS - Ask Us Anything!
Meet Qt 6.2 LTS - Ask Us Anything!
 
Meet Qt 6.0
Meet Qt 6.0 Meet Qt 6.0
Meet Qt 6.0
 

En vedette

Cross platform solutions for Mobile App Development
Cross platform solutions for Mobile App Development Cross platform solutions for Mobile App Development
Cross platform solutions for Mobile App Development
USAID CEED II Project Moldova
 
Cross platform development
Cross platform developmentCross platform development
Cross platform development
dftaiwo
 
"How to Develop with Qt for Multiple Screen Resolutions and Increase Your Use...
"How to Develop with Qt for Multiple Screen Resolutions and Increase Your Use..."How to Develop with Qt for Multiple Screen Resolutions and Increase Your Use...
"How to Develop with Qt for Multiple Screen Resolutions and Increase Your Use...
FELGO SDK
 

En vedette (13)

Orbit global indian tour planners
Orbit global indian tour plannersOrbit global indian tour planners
Orbit global indian tour planners
 
Xwt, a cross-desktop UI library
Xwt, a cross-desktop UI libraryXwt, a cross-desktop UI library
Xwt, a cross-desktop UI library
 
The Mobile Market and Qt
The Mobile Market and QtThe Mobile Market and Qt
The Mobile Market and Qt
 
Cross platform solutions for Mobile App Development
Cross platform solutions for Mobile App Development Cross platform solutions for Mobile App Development
Cross platform solutions for Mobile App Development
 
Qt Application Development on Harmattan
Qt Application Development on HarmattanQt Application Development on Harmattan
Qt Application Development on Harmattan
 
Cross platform development
Cross platform developmentCross platform development
Cross platform development
 
Cross platform mobile app development tools review
Cross platform mobile app development tools reviewCross platform mobile app development tools review
Cross platform mobile app development tools review
 
A Brief Introduction to the Qt Application Framework
A Brief Introduction to the Qt Application FrameworkA Brief Introduction to the Qt Application Framework
A Brief Introduction to the Qt Application Framework
 
Qt Application Development
Qt Application DevelopmentQt Application Development
Qt Application Development
 
"How to Develop with Qt for Multiple Screen Resolutions and Increase Your Use...
"How to Develop with Qt for Multiple Screen Resolutions and Increase Your Use..."How to Develop with Qt for Multiple Screen Resolutions and Increase Your Use...
"How to Develop with Qt for Multiple Screen Resolutions and Increase Your Use...
 
How to Make Your Qt App Look Native
How to Make Your Qt App Look NativeHow to Make Your Qt App Look Native
How to Make Your Qt App Look Native
 
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...
 
Mobile Development with Qt for Symbian
Mobile Development with Qt for SymbianMobile Development with Qt for Symbian
Mobile Development with Qt for Symbian
 

Similaire à Building Cross-Platform Apps using Qt and Qyoto

Necessitas - Qt on Android - from FSCONS 2011
Necessitas - Qt on Android - from FSCONS 2011Necessitas - Qt on Android - from FSCONS 2011
Necessitas - Qt on Android - from FSCONS 2011
Johan Thelin
 
Building the Internet of Things with Eclipse IoT - JavaLand 2014
Building the Internet of Things with Eclipse IoT - JavaLand 2014Building the Internet of Things with Eclipse IoT - JavaLand 2014
Building the Internet of Things with Eclipse IoT - JavaLand 2014
Benjamin Cabé
 

Similaire à Building Cross-Platform Apps using Qt and Qyoto (20)

Treinamento Qt básico - aula I
Treinamento Qt básico - aula ITreinamento Qt básico - aula I
Treinamento Qt básico - aula I
 
Epam mobile meetup 2014 10-15 qt cross-platform solution for mobile development
Epam mobile meetup 2014 10-15 qt cross-platform solution for mobile developmentEpam mobile meetup 2014 10-15 qt cross-platform solution for mobile development
Epam mobile meetup 2014 10-15 qt cross-platform solution for mobile development
 
Qt Automotive Suite - under the hood // Qt World Summit 2017
Qt Automotive Suite - under the hood // Qt World Summit 2017Qt Automotive Suite - under the hood // Qt World Summit 2017
Qt Automotive Suite - under the hood // Qt World Summit 2017
 
Developing and Benchmarking Qt applications on Hawkboard with Xgxperf
Developing and Benchmarking Qt applications on Hawkboard with XgxperfDeveloping and Benchmarking Qt applications on Hawkboard with Xgxperf
Developing and Benchmarking Qt applications on Hawkboard with Xgxperf
 
Cross Platform Qt
Cross Platform QtCross Platform Qt
Cross Platform Qt
 
Qt S60 Technical Presentation Fn Stripped
Qt S60 Technical Presentation Fn StrippedQt S60 Technical Presentation Fn Stripped
Qt S60 Technical Presentation Fn Stripped
 
Powering your next IoT application with MQTT - JavaOne 2014 tutorial
Powering your next IoT application with MQTT - JavaOne 2014 tutorialPowering your next IoT application with MQTT - JavaOne 2014 tutorial
Powering your next IoT application with MQTT - JavaOne 2014 tutorial
 
Qt quick at Cybercom Developer Day 2010 by Alexis Menard 7.9.2010
Qt quick at Cybercom Developer Day 2010 by Alexis Menard 7.9.2010Qt quick at Cybercom Developer Day 2010 by Alexis Menard 7.9.2010
Qt quick at Cybercom Developer Day 2010 by Alexis Menard 7.9.2010
 
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
 
Porting Motif Applications to Qt - Webinar
Porting Motif Applications to Qt - WebinarPorting Motif Applications to Qt - Webinar
Porting Motif Applications to Qt - Webinar
 
Porting Motif Applications to Qt - Webinar
Porting Motif Applications to Qt - WebinarPorting Motif Applications to Qt - Webinar
Porting Motif Applications to Qt - Webinar
 
Necessitas - Qt on Android - from FSCONS 2011
Necessitas - Qt on Android - from FSCONS 2011Necessitas - Qt on Android - from FSCONS 2011
Necessitas - Qt on Android - from FSCONS 2011
 
Building the Internet of Things with Eclipse IoT - JavaLand 2014
Building the Internet of Things with Eclipse IoT - JavaLand 2014Building the Internet of Things with Eclipse IoT - JavaLand 2014
Building the Internet of Things with Eclipse IoT - JavaLand 2014
 
PyQt.pptx
PyQt.pptxPyQt.pptx
PyQt.pptx
 
Red Hat and kubernetes: awesome stuff coming your way
Red Hat and kubernetes:  awesome stuff coming your wayRed Hat and kubernetes:  awesome stuff coming your way
Red Hat and kubernetes: awesome stuff coming your way
 
PyQt Application Development On Maemo
PyQt Application Development On MaemoPyQt Application Development On Maemo
PyQt Application Development On Maemo
 
Next Generation Hybrid Applications with Qt - presentation for SEE 2009
Next Generation Hybrid Applications with Qt - presentation for SEE 2009Next Generation Hybrid Applications with Qt - presentation for SEE 2009
Next Generation Hybrid Applications with Qt - presentation for SEE 2009
 
IBM Rational Rhapsody and Qt Integration
IBM Rational Rhapsody and Qt IntegrationIBM Rational Rhapsody and Qt Integration
IBM Rational Rhapsody and Qt Integration
 
Qtframework
QtframeworkQtframework
Qtframework
 
Qt for Python
Qt for PythonQt for Python
Qt for Python
 

Dernier

Low Rate ✨➥9582086666▻✨Call Girls In Gurgaon Sector 21 (Gurgaon)
Low Rate ✨➥9582086666▻✨Call Girls In Gurgaon Sector 21 (Gurgaon)Low Rate ✨➥9582086666▻✨Call Girls In Gurgaon Sector 21 (Gurgaon)
Low Rate ✨➥9582086666▻✨Call Girls In Gurgaon Sector 21 (Gurgaon)
delhi24hrs1
 
BPTP THE AMAARIO For The Royals Of Tomorrow in Sector 37D Gurgaon Dwarka Expr...
BPTP THE AMAARIO For The Royals Of Tomorrow in Sector 37D Gurgaon Dwarka Expr...BPTP THE AMAARIO For The Royals Of Tomorrow in Sector 37D Gurgaon Dwarka Expr...
BPTP THE AMAARIO For The Royals Of Tomorrow in Sector 37D Gurgaon Dwarka Expr...
ApartmentWala1
 
Call girls in Shakti Nagar Delhi~8447779280°/=@/ Short 1500 Night 6000}ESCORT...
Call girls in Shakti Nagar Delhi~8447779280°/=@/ Short 1500 Night 6000}ESCORT...Call girls in Shakti Nagar Delhi~8447779280°/=@/ Short 1500 Night 6000}ESCORT...
Call girls in Shakti Nagar Delhi~8447779280°/=@/ Short 1500 Night 6000}ESCORT...
asmaqueen5
 
Acibadem Konaklari Uskudar - Listin Turkey
Acibadem Konaklari Uskudar - Listin TurkeyAcibadem Konaklari Uskudar - Listin Turkey
Acibadem Konaklari Uskudar - Listin Turkey
Listing Turkey
 
Cheap Rate ✨➥9711108085▻✨Call Girls In Connaught Place (Delhi)
Cheap Rate ✨➥9711108085▻✨Call Girls In Connaught Place (Delhi)Cheap Rate ✨➥9711108085▻✨Call Girls In Connaught Place (Delhi)
Cheap Rate ✨➥9711108085▻✨Call Girls In Connaught Place (Delhi)
delhi24hrs1
 
Escort—>Call GiRls In Mori Gate Delhi —>8447779280—Service Escorts In South D...
Escort—>Call GiRls In Mori Gate Delhi —>8447779280—Service Escorts In South D...Escort—>Call GiRls In Mori Gate Delhi —>8447779280—Service Escorts In South D...
Escort—>Call GiRls In Mori Gate Delhi —>8447779280—Service Escorts In South D...
asmaqueen5
 
Call Girls in Maurice Nagar (Delhi) ꧁8447779280꧂ Female Escorts Service in De...
Call Girls in Maurice Nagar (Delhi) ꧁8447779280꧂ Female Escorts Service in De...Call Girls in Maurice Nagar (Delhi) ꧁8447779280꧂ Female Escorts Service in De...
Call Girls in Maurice Nagar (Delhi) ꧁8447779280꧂ Female Escorts Service in De...
asmaqueen5
 
Listing Turkey - 2024 - May Featured Portfolio
Listing Turkey - 2024 - May Featured PortfolioListing Turkey - 2024 - May Featured Portfolio
Listing Turkey - 2024 - May Featured Portfolio
Listing Turkey
 

Dernier (20)

Housing Price Regulation Thesis Defense by Slidesgo.pptx
Housing Price Regulation Thesis Defense by Slidesgo.pptxHousing Price Regulation Thesis Defense by Slidesgo.pptx
Housing Price Regulation Thesis Defense by Slidesgo.pptx
 
SVN Live 5.6.24 Weekly Property Broadcast
SVN Live 5.6.24 Weekly Property BroadcastSVN Live 5.6.24 Weekly Property Broadcast
SVN Live 5.6.24 Weekly Property Broadcast
 
Madhugiri Boucher Managed Farmland (knx)
Madhugiri Boucher Managed Farmland (knx)Madhugiri Boucher Managed Farmland (knx)
Madhugiri Boucher Managed Farmland (knx)
 
Jaipur Escorts 🥰 8617370543 Call Girls Offer VIP Hot Girls
Jaipur Escorts 🥰 8617370543 Call Girls Offer VIP Hot GirlsJaipur Escorts 🥰 8617370543 Call Girls Offer VIP Hot Girls
Jaipur Escorts 🥰 8617370543 Call Girls Offer VIP Hot Girls
 
Nyati Elite NIBM Road Pune E Brochure.pdf
Nyati Elite NIBM Road Pune E Brochure.pdfNyati Elite NIBM Road Pune E Brochure.pdf
Nyati Elite NIBM Road Pune E Brochure.pdf
 
Low Rate ✨➥9582086666▻✨Call Girls In Gurgaon Sector 21 (Gurgaon)
Low Rate ✨➥9582086666▻✨Call Girls In Gurgaon Sector 21 (Gurgaon)Low Rate ✨➥9582086666▻✨Call Girls In Gurgaon Sector 21 (Gurgaon)
Low Rate ✨➥9582086666▻✨Call Girls In Gurgaon Sector 21 (Gurgaon)
 
Retail Space for Lease - 1221 W. Main St., Sun Prairie, WI
Retail Space for Lease - 1221 W. Main St., Sun Prairie, WIRetail Space for Lease - 1221 W. Main St., Sun Prairie, WI
Retail Space for Lease - 1221 W. Main St., Sun Prairie, WI
 
Ganga Platinum Kharadi Pune brochure.pdf
Ganga Platinum Kharadi Pune brochure.pdfGanga Platinum Kharadi Pune brochure.pdf
Ganga Platinum Kharadi Pune brochure.pdf
 
Best Interior Design Services in Haldwani
Best Interior Design Services in HaldwaniBest Interior Design Services in Haldwani
Best Interior Design Services in Haldwani
 
BPTP THE AMAARIO For The Royals Of Tomorrow in Sector 37D Gurgaon Dwarka Expr...
BPTP THE AMAARIO For The Royals Of Tomorrow in Sector 37D Gurgaon Dwarka Expr...BPTP THE AMAARIO For The Royals Of Tomorrow in Sector 37D Gurgaon Dwarka Expr...
BPTP THE AMAARIO For The Royals Of Tomorrow in Sector 37D Gurgaon Dwarka Expr...
 
Call girls in Shakti Nagar Delhi~8447779280°/=@/ Short 1500 Night 6000}ESCORT...
Call girls in Shakti Nagar Delhi~8447779280°/=@/ Short 1500 Night 6000}ESCORT...Call girls in Shakti Nagar Delhi~8447779280°/=@/ Short 1500 Night 6000}ESCORT...
Call girls in Shakti Nagar Delhi~8447779280°/=@/ Short 1500 Night 6000}ESCORT...
 
Yashwin Enchante Uppar Kharadi Pune E-Brochue.pdf
Yashwin Enchante Uppar Kharadi Pune  E-Brochue.pdfYashwin Enchante Uppar Kharadi Pune  E-Brochue.pdf
Yashwin Enchante Uppar Kharadi Pune E-Brochue.pdf
 
Acibadem Konaklari Uskudar - Listin Turkey
Acibadem Konaklari Uskudar - Listin TurkeyAcibadem Konaklari Uskudar - Listin Turkey
Acibadem Konaklari Uskudar - Listin Turkey
 
Cheap Rate ✨➥9711108085▻✨Call Girls In Connaught Place (Delhi)
Cheap Rate ✨➥9711108085▻✨Call Girls In Connaught Place (Delhi)Cheap Rate ✨➥9711108085▻✨Call Girls In Connaught Place (Delhi)
Cheap Rate ✨➥9711108085▻✨Call Girls In Connaught Place (Delhi)
 
Escort—>Call GiRls In Mori Gate Delhi —>8447779280—Service Escorts In South D...
Escort—>Call GiRls In Mori Gate Delhi —>8447779280—Service Escorts In South D...Escort—>Call GiRls In Mori Gate Delhi —>8447779280—Service Escorts In South D...
Escort—>Call GiRls In Mori Gate Delhi —>8447779280—Service Escorts In South D...
 
Vanam At Purva Soukhyam Guduvanchery.pdf.pdf
Vanam At Purva Soukhyam Guduvanchery.pdf.pdfVanam At Purva Soukhyam Guduvanchery.pdf.pdf
Vanam At Purva Soukhyam Guduvanchery.pdf.pdf
 
Call Girls in Maurice Nagar (Delhi) ꧁8447779280꧂ Female Escorts Service in De...
Call Girls in Maurice Nagar (Delhi) ꧁8447779280꧂ Female Escorts Service in De...Call Girls in Maurice Nagar (Delhi) ꧁8447779280꧂ Female Escorts Service in De...
Call Girls in Maurice Nagar (Delhi) ꧁8447779280꧂ Female Escorts Service in De...
 
Kohinoor Courtyard One Wakad Pune | Elegant Living Spaces
Kohinoor Courtyard One Wakad Pune | Elegant Living SpacesKohinoor Courtyard One Wakad Pune | Elegant Living Spaces
Kohinoor Courtyard One Wakad Pune | Elegant Living Spaces
 
Real Estate Finance and Investments (2019).pdf
Real Estate Finance and Investments (2019).pdfReal Estate Finance and Investments (2019).pdf
Real Estate Finance and Investments (2019).pdf
 
Listing Turkey - 2024 - May Featured Portfolio
Listing Turkey - 2024 - May Featured PortfolioListing Turkey - 2024 - May Featured Portfolio
Listing Turkey - 2024 - May Featured Portfolio
 

Building Cross-Platform Apps using Qt and Qyoto

  • 1. Development of Cross Platform Apps using Qyoto and Qt Jeff Alstadt
  • 2. ABOUT CENTARE fast. forward. thinking. At Centare, every team member: Thinks strategically Solves complex problems Creates scalable solutions Is passionate about what we do
  • 3. OF NOTE Agile / ALM / Mobile / Cloud Microsoft 2011 Partner of the Year Finalist ALM Gold Competency Azure Circle Apple / Android / Windows Phone iOS, Java, C#, Silverlight/XAML Scrum.org Partner Certified Professional Scrum Trainers
  • 5. Why Qt and why Qyoto AGENDA GETTING STARTED WITH Qt and Qyoto
  • 6. BUT ISNT QT DEAD? Quite the opposite, it is living strong. Qt is being used by 450,000 developers in 70 industries Qt increases productivity by 70% with reduced development costs of 75% These guys are using Qt:
  • 7. WHAT IS QT What is Qt? How is Qt Cross-Platform? How do Qyoto and Qt work together? How can I use Qyoto in my apps?
  • 8. WHAT IS QT? Qt is a cross-platform UI framework that was developed by Trolltech, later acquired by Nokia for creating UIs that can run on the Mac, Linux and Windows platform Qt utilizes a moc compiler known as the Meta Object Compiler with several macros to provide the Qt specifics of the Qt language
  • 9. THE FOUNDERS OF QT Haavard Nord and Eirik Chambe-Eng founded Qt with its initial development in 1991. The toolkit was called Qt becuase the letter Q looked appealing in Haavard‘s Emacs font and “t“ was inspired by Xt, the X toolkit
  • 10. GETTING STARTED WITH QT CREATOR Qt Creator is the cross-platform developer IDE It has a C++ compiler support built in, Qt centric UI designer tools, and solid debugger. Works on all three platforms including Mac, Linux and Windows
  • 11. WHAT IS QYOTO? Qyoto is a C# language binding for Qt. It is not officially supported by Nokia or Digia It is an open source community driven project with a lot of the work coming from KDE contributors The top contributors of Kyoto are Arno Rehn, Ian Moore, and Dimitri Dobrev
  • 12. CONCEPTS OF QT DESIGN Signals and Slots Qt Property System Qt Event System Using Model View in Qt
  • 13. SIGNALS AND SLOTS A MEANS TO COMMUNICATE DATA Signal Specific concept in Qt Creates the construct to every Qt developer needs to know Type safe Decoupled Objects inherited from QObject will only receive the signal notifcations connect connects the object signal to the respective slot
  • 14. SHOW ME THE CODE:
  • 15. SHOW ME THE C# CODE [Q_OBJECT] public class Counter { public Counter() {} private int m_value; [Q_SLOT] public void setValue(int value) { if ( m_value != value) { m_value = value; emit valueChanged(value); } } }
  • 16. QT PROPERTY SYSTEM The Qt system provides a means to set any property in the Qt Meta-Object System The Qt solution works with any standard C++ compiler Qt supports Q_PROPERTY is a macro that is used to declare property This declaration must be done inside a QObject
  • 17. QT EVENT SYSTEM An event is an object or a set of objects derived from the abstract class QEvent Events represent things that have happened either within an application or as a result of outside activity that the application needs to know about Events are recieved and handled by instance of a derived QObject class
  • 18. LIST OF COMMON EVENT TYPES QResizeEvent (Window Resizing) QPaintEvent (Window Repainting) QMouseEvent (Mouse Input) QKeyEvent (Keyboard Input) QCloseEvent (Window close)
  • 19. SENDING EVENTS In Qt, we can utilize the QCoreApplication to create and send our own custom events. To do this, we utilize sendEvent() and postEvent(). sendEvent() processes the event immediatly. postEvent() posts the event on queue for later dispatch When Qt‘s main event loop runs, it will then dispatch all posted events. To create a custom Qt Event type, simpily subclass your event from QEvent and ensure it has an event number that is greater than QEvent::User (1000 presently in 4.8) For all events, check here
  • 20. USING MODEL VIEW IN QT Qt has an advanced Model View archictecture concept that was inspired from the MVC approach Instead Qt utilizes a delegate instead of a controller The delegate is used to provide a fine control over how items are rendered and edited For Qt specific views, Qt provides the appropriate delegate for that view
  • 21. COMMON PREDEFINED QT MODELS QStringListModel QStandardItemModel QDirModel QSqlQueryModel QSqlTableModel QSqlRelationalTableModel QSortFilterProxyModel
  • 22. GREAT HOW DO I GET A ROCKIN‘ WITH QYOTO To set up Qyoto you will need a fresh Linux install of your favorite Linux distro (I chose Ubuntu) Next you will need to download and install the Qt SDK, Mono, MonoDevelop, Gtk2.0, QScintella 2.0, Phonon lib, smoke gen My blog has more details how to set up your box.
  • 23. QYOTO DEMO Overview of using mono develop with qyoto Will be shown on Linux
  • 24. QT IN MOBILE Qt on Android Qt on iOS
  • 25. QT ON ANDROID The Necessitas project is a community driven lighthouse based port of Qt to Android It has a plugin for Qt Creator to do Android development An installer application for Android called Ministro exists Ministro is responsible for downloading the Qt libraries specific to that Android device
  • 26. QT ON IOS The Qt Lighthouse project was an initiative to get Qt running on the iOS platforms. It has had success, and is being integrated with Qt 5.0
  • 27. ONWARD TO QT 5 Qt 5 brings on a lot of new changes. QML plays a bigger role in UI design JavaScript will be heavily used over C++ Its objectives are Make better use of the GPU, allowing you to create smooth (and accelerated) graphics performance even with limited resources Making your creation of advanced applications and UIs easier and faster (with QML and Javascript) Make apps connected to the web be as powerful as possible, i.e. to embed and power up web content and services into any Qt app Reduce the complexity and amount of code required to maintain and implement a port
  • 28. VISION FOR QT 5 “Qt 5 should be the foundation for a new way of developing applications. While offering all of the power of native Qt using C++, the focus should shift to a model, where C++ is mainly used to implement modular backend functionality for Qt Quick” – Lars Knoll, Qt Project
  • 29. QT 5 ARCHITECTURE CHANGES Rearchitecture of the graphics stack QtQuick and QML Scenegraph will be the center of the new graphics architecture QPainter will still be available Qt 5 will require OpenGL 2.0 Qwidgets will be layered on top of the scene graph Qt ports will be based on Lighthouse Lighthouse provides a better windows abstract system Modular repository structure Speeds up the integration process of contributions to the Qt framework Seperation of all QWidget related functionality into its own library QML will be the UI defacto, where QWidget will be there to support older Qt apps
  • 30. YOUR NAME YOUR TITLE SECOND TITLE LINE, IF NEEDED SITE: www.centare.comom EMAIL: first.last@centare.com TWITTER: @myhandle BLOG: www.ifyouhaveone.com LINKEDIN: /yourhandle