SlideShare a Scribd company logo
© Integrated Computer Solutions, Inc. All Rights Reserved
Migrating from
QNX Photon to Qt
Bobby Chawla <bchawla@ics.com>
Integrated Computer Solutions, Inc.
© Integrated Computer Solutions, Inc. All Rights Reserved
Introduction
● Working with ICS for about four years now
● Taste for real-time software development
● Used to work with Process Control Systems for industry:
○ Pulp & Paper machines
○ Lots of QNX development
● Offered to work on QNX itself
● About five years developing various parts of Photon
© Integrated Computer Solutions, Inc. All Rights Reserved
Agenda
● Introduction
● What is (was) Photon?
● What is Qt?
● Anatomy of an application
● Architecture differences
● Qt Signals and slots
● Widget comparisons
● When to port
● Porting from QNX
● Conclusion
© Integrated Computer Solutions, Inc. All Rights Reserved
What is (was) Photon?
● Photon : A name with multiple meanings:
○ Light particle
○ QNX/Photon MicroGUI
■ typically used with Neutrino
○ Photon UI project (Javascript framework to create UIs)
○ Photon OS distribution
… Probably More … .
© Integrated Computer Solutions, Inc. All Rights Reserved
What is (was) Photon?
● Photon : A name with multiple meanings:
○ Light particle
○ QNX/Photon MicroGUI
■ typically used with Neutrino
○ Photon UI project (Javascript framework to create UIs)
○ Photon OS distribution
We are talking about the QNX/Photon MicroGUI .
© Integrated Computer Solutions, Inc. All Rights Reserved
What is (was) Photon… cont. ● Started in the Mid-90s
● Had a Windows 95 look and feel:
○ “modern” at the time
● Evolved with more GUI options
© Integrated Computer Solutions, Inc. All Rights Reserved
What is(was) Photon… cont.
● Deprecated Could say Depreciated - Appropriate verb
● QNX v6.32 - Full implementation
● QNX v6.4 - Reduced widget set:
○ Removed browser & email applications
○ Removed PtTerminal
■ though PtTty was still there
● QNX v6.5 - Essentially the windowing system was still there:
○ But not designed to be a desktop OS
● QNX v6.6 - Unsupported:
○ But die-hards could import the 6.5 executables
● QNX v7 - Unavailable - Now it’s deprecated
© Integrated Computer Solutions, Inc. All Rights Reserved
What is Qt?
● Cross-platform application framework
● Supports all major desktop, mobile, embedded platforms
○ Windows, Mac OS, Linux, iOS, Android, QNX, etc.
● Written in C++
● Not just for GUI, but includes portable abstraction for most OS features
○ File i/o, strings, containers, networking, etc.
● Around since 1991
● Used by approximately 1 million developers in over 70 industries
● Owned by The Qt Company
● Available under GPL/LGPL and commercial licenses
© Integrated Computer Solutions, Inc. All Rights Reserved
What is Qt? - Qt Widgets
● Traditional building blocks for
GUI applications in Qt:
○ e.g. QButton, QLabel,
QTextEdit
● Can use Qt Designer - a GUI
builder for designing dialogs and
screens
● Have native look on each
platform
● Originally designed for desktop
applications, but also usable on
mobile and embedded.
© Integrated Computer Solutions, Inc. All Rights Reserved
What is Qt? - QML (aka Qt Quick)
● Simple JSON-like declarative language
● Provides basic elements to build up user interfaces
● Elements support properties, signals, methods
● Makes it easy to define animated, fluid, touchscreen interfaces
● Qt Quick Controls provide widget-like UI elements
● Backed by full JavaScript engine
● Qt Creator IDE has a QML Designer
○ developers typically write code by hand (QML Designer getting better)
● Mostly targeted at mobile and embedded
○ but also supported on desktop platforms
© Integrated Computer Solutions, Inc. All Rights Reserved
What is Qt? - Qt on QNX
● Qt has been available as an option for QNX development since 2010
● Qt widgets provide similar classes and mechanisms to Photon’s
● Typically find source code to Qt, configure for QNX, and compile
● Given the current customer base of QNX-7 - QNX is encouraging QML:
○ Partially configured for QML already in Momentics
○ Since this presentation is about porting from Photon,
■ we will focus on Qt widgets
© Integrated Computer Solutions, Inc. All Rights Reserved
Anatomy of an Application
● At a high level, both Photon & Qt GUI applications are:
○ Event driven
○ Similar parent/child relationships
■ parent window
■ every widget has a parent which helps keep things organized
● e.g. when the parent gets deleted, the child cleans up as well
■ dialogs - children of parent’s windows
○ Interactions
■ Photon uses callbacks vs. Qt using “signals and slots”
○ Qt separates widgets from layout managers
© Integrated Computer Solutions, Inc. All Rights Reserved
Architecture Differences
● Photon (conceptually) is an entire graphical system:
○ Though not as well documented, just as easy to create an app that captures
Photon events, thus being able to create your own:
■ graphics driver
■ mouse controller
■ screen capture app
■ virtual keyboard
■ other IO device
© Integrated Computer Solutions, Inc. All Rights Reserved
Architecture Differences… cont.
● Those of you familiar with Photon will know about:
○ Pg….() functions - Raw graphics functions
○ Ph….() functions - Open Photon channels, create regions, collect/emit
events
○ Pt….() functions - Create, Manipulate & Destroy widgets
● Qt:
○ Qt widget classes map mostly to Pt….() functions
○ Mature ecosystem of other classes for portability & convenience
■ e.g. stacks, accessing filesystem, strings
© Integrated Computer Solutions, Inc. All Rights Reserved
Architecture Differences… cont.
● Typically Qt is run in a third-party’s windowing environment:
○ Qt has backends for different graphics rendering environments
■ X11/xcb, OpenGL/ES, Linux frame buffer, etc.
■ look & feel designed to look native on the device
● same application looks/behaves slightly differently on a Mac than on
Linux or Windows
○ If working with a specialized board
■ need to speak with the hardware (BSP) vendor to interface with new
devices
© Integrated Computer Solutions, Inc. All Rights Reserved
Architecture Differences… cont.
Application development: PhAB , Qt Designer (GUI builder) & Qt Creator (IDE).
© Integrated Computer Solutions, Inc. All Rights Reserved
Architecture Differences… cont.
● Photon uses “PhAB”,
● Can compile/link in PhAB
● PhAB - not your average
application builder:
○ No source code created for
PhAB windows/dialog
○ GUI component info
written as binary data as
part of the executable
© Integrated Computer Solutions, Inc. All Rights Reserved
Architecture Differences… cont.
● Qt Creator (and Designer) is
not your average application
builder either:
○ Full development suite
○ Architecture-safe classes
○ PhAB/Photon users will
appreciate how easily tasks
get done (e.g. menus)
© Integrated Computer Solutions, Inc. All Rights Reserved
Architecture Differences… menus
© Integrated Computer Solutions, Inc. All Rights Reserved
Qt Signals & Slots
● Another term that can have different meanings: “Signals”:
○ QNX developers associate “Signals” as an operating system message
■ Signal can be passed from one process to another
■ Interrupts the receiving process, and process the signal
■ The call does not block the calling process
● Qt “Signals” are not the same as Linux/POSIX signals above:
○ Qt Signals & Slots are a one-to-many messaging system that lets Qt
“Objects” communicate within a process
○ Could be blocking function call, or could be queued
○ No “return” values from a signal
● Which differ from Boost Signals/Slots - allow return values from the “slots”
© Integrated Computer Solutions, Inc. All Rights Reserved
Qt Signals & Slots… cont.
● Qt signals are an expanded form of callbacks that allow separation of UI
elements from business logic
● Signals are emitted by Qt objects when event occurs (e.g. button pressed)
● Slots are methods that can be called in response to a signal
● Typically connect signals and slots at run-time
● Qt uses “moc” tool to generate meta object information about signals/slots
● Type safe alternative to callbacks, checked at compile time or run time
© Integrated Computer Solutions, Inc. All Rights Reserved
Widget Comparison - Menus and Options
Functionality Photon Qt Major Differences
Horizontal Menubar PtMenuBar QMenuBar QMenuBar has several insert Item
methods.
Pulldown Popup Menu PtMenu QMenu Qt provides a cleaner abstraction
using QMenu.
The common object for pulldowns
popups, and menubars
Menu button PtMenuButton QMenu
Combo Box PtComboBox QComboBox
Toggle or Multiple-selection
options
PtToggleButton
(Pt_TOGGLE_RADIO)
QRadioButton or
QCheckBox
© Integrated Computer Solutions, Inc. All Rights Reserved
Widget Comparison - Dialogs
Functionality Photon Qt
Error PtAlert() QErrorMessage
Information PtNotice() QMessageBox
Question PtAlert() QMessageBox
Warning PtAlert() QMessageBox
Progress PtProgress widget QProgressDialog
Simple Input PtPrompt() QInputDialog
File Chooser PtFileSelection() QFileDialog
HTML/Web display PtWebClient widget QWebView
Generic/Custom PtWindow container QDialog
● Italicized Photon
items (such as
PtAlert()) are
convenience
functions which
use widgets to
build a dialog
© Integrated Computer Solutions, Inc. All Rights Reserved
Widget Comparison… cont.
● Examples of widgets that are not 1 to 1 relationships:
○ PtTimer
○ RtTrend
● Qt has a large user base with many contributors:
○ Many sophisticated Qt widgets that don't exist in Photon are available from
3rd
party vendors
© Integrated Computer Solutions, Inc. All Rights Reserved
Widget Comparison - Containers vs. Layouts
● PtContainer (or it’s subclasses) allow the automatic placement of widgets in a:
○ FILL_LAYOUT (Horizontal / Vertical)
○ ROW_LAYOUT (Horizontal/Vertical with options for Justify, Wrap and Pack)
○ GRID_LAYOUT
○ ANCHOR_LAYOUT
● In Qt, layouts are more sophisticated:
○ Layouts are separated from any widget subclassed off of QWidget
○ Container widgets can manage their children using QWidget::setLayout()
© Integrated Computer Solutions, Inc. All Rights Reserved
When to Port / When to Consider Rewrite
● Photon is deprecated / newer hardware not supported
○ Eventually will run out of hardware options
○ Or user expectations for a device increase
● What code can you typically keep and what do you need to rewrite?
● Design aspects that makes it easier to port, e. g.
○ Good separation of UI and business logic.
○ Much of your application can be dissected into Model-View-Controller
(MVC) portions
© Integrated Computer Solutions, Inc. All Rights Reserved
Object Oriented Design 101
● Qt is based off C++:
○ Photon apps are usually ‘C’ based
○ Need to port some or all of your code to C++.
○ Your team may need to learn object-oriented design.
○ May require re-architecting (e.g. to separate GUI from business logic).
● C++ applications typically better at compartmentalizing,
○ Scale better for larger projects
© Integrated Computer Solutions, Inc. All Rights Reserved
Object
Oriented
Design
“101”
© Integrated Computer Solutions, Inc. All Rights Reserved
Object Oriented Design 101… cont.
● Created the same application in Photon & Qt
● In Photon had a functional relation PtText → callback → PtSetArg( PtLabel )
● Can do a similar connection with Qt:
○ QLineEdit → signal to QObject::AddHello → signal to QLabel
● However, a cleaner implementation is to create a ‘Hello’ widget:
○ Create a QHelloLabel as a subclass of QLabel,
○ QHelloLabel displays the string with ‘Hello’ prepended
○ QLineEdit → signal to QHelloLabel
Less code, less portions that can break, easier to test, ….
© Integrated Computer Solutions, Inc. All Rights Reserved
Porting from QNX
Note for native QNX-ers
● QNX has been, and continues to be a “Message passing” architecture:
○ Lightweight transition from one process to another
○ Designed for many thousands (millions) of messages
○ Many aspects of QNX based on message passing
○ Photon is no exception
● If porting to other operating systems:
○ Can’t rely as heavily on OS-level message passing
○ Buffered streams more common
○ QNX is a POSIX OS, therefore a port to Linux should be easier
© Integrated Computer Solutions, Inc. All Rights Reserved
Conclusion
● Most applications would have one to one mapping to Qt widgets
● Need help getting started? ICS developers:
○ Have many years of experience with Qt and QNX/Photon
○ Can assist you with the port (while your developers continue advancing
with current development)
○ Can help you get started by analyzing your application and coming up with
a plan of action
© Integrated Computer Solutions, Inc. All Rights Reserved
Questions?

More Related Content

What's hot

Convert Your Legacy OpenGL Code to Modern OpenGL with Qt
Convert Your Legacy OpenGL Code to Modern OpenGL with QtConvert Your Legacy OpenGL Code to Modern OpenGL with Qt
Convert Your Legacy OpenGL Code to Modern OpenGL with Qt
ICS
 
Qt 5 - C++ and Widgets
Qt 5 - C++ and WidgetsQt 5 - C++ and Widgets
Qt 5 - C++ and Widgets
Juha Peltomäki
 
Optimizing Performance in Qt-Based Applications
Optimizing Performance in Qt-Based ApplicationsOptimizing Performance in Qt-Based Applications
Optimizing Performance in Qt-Based Applications
account inactive
 
OpenGL Fixed Function to Shaders - Porting a fixed function application to “m...
OpenGL Fixed Function to Shaders - Porting a fixed function application to “m...OpenGL Fixed Function to Shaders - Porting a fixed function application to “m...
OpenGL Fixed Function to Shaders - Porting a fixed function application to “m...
ICS
 
Development with Qt for Windows CE
Development with Qt for Windows CEDevelopment with Qt for Windows CE
Development with Qt for Windows CE
account inactive
 
Qt Tutorial - Part 1
Qt Tutorial - Part 1Qt Tutorial - Part 1
Qt Tutorial - Part 1rmitc
 
Creating Advanced GUIs for Low-power MCUs with Qt
Creating Advanced GUIs for Low-power MCUs with QtCreating Advanced GUIs for Low-power MCUs with Qt
Creating Advanced GUIs for Low-power MCUs with Qt
ICS
 
Hildon 2.2: the Hildon toolkit for Fremantle
Hildon 2.2: the Hildon toolkit for FremantleHildon 2.2: the Hildon toolkit for Fremantle
Hildon 2.2: the Hildon toolkit for Fremantle
Alberto Garcia
 
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
account inactive
 
Treinamento Qt básico - aula I
Treinamento Qt básico - aula ITreinamento Qt básico - aula I
Treinamento Qt básico - aula I
Marcelo Barros de Almeida
 
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
Arun Kumar Thondapu
 
Porting Motif Applications to Qt - Webinar
Porting Motif Applications to Qt - WebinarPorting Motif Applications to Qt - Webinar
Porting Motif Applications to Qt - Webinar
Janel Heilbrunn
 
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 2011Johan Thelin
 
Cross Platform Qt
Cross Platform QtCross Platform Qt
Cross Platform Qt
Johan Thelin
 
Qt for beginners part 1 overview and key concepts
Qt for beginners part 1   overview and key conceptsQt for beginners part 1   overview and key concepts
Qt for beginners part 1 overview and key concepts
ICS
 
Qt Workshop
Qt WorkshopQt Workshop
Qt Workshop
Johan Thelin
 
Driving Down Automotive Costs for Richer HMIs with Qt & i.MX RT1170
Driving Down Automotive Costs for Richer HMIs with Qt & i.MX RT1170Driving Down Automotive Costs for Richer HMIs with Qt & i.MX RT1170
Driving Down Automotive Costs for Richer HMIs with Qt & i.MX RT1170
Qt
 
Update on the open source browser space (16th GENIVI AMM)
Update on the open source browser space (16th GENIVI AMM)Update on the open source browser space (16th GENIVI AMM)
Update on the open source browser space (16th GENIVI AMM)
Igalia
 

What's hot (20)

Convert Your Legacy OpenGL Code to Modern OpenGL with Qt
Convert Your Legacy OpenGL Code to Modern OpenGL with QtConvert Your Legacy OpenGL Code to Modern OpenGL with Qt
Convert Your Legacy OpenGL Code to Modern OpenGL with Qt
 
Qt 5 - C++ and Widgets
Qt 5 - C++ and WidgetsQt 5 - C++ and Widgets
Qt 5 - C++ and Widgets
 
Optimizing Performance in Qt-Based Applications
Optimizing Performance in Qt-Based ApplicationsOptimizing Performance in Qt-Based Applications
Optimizing Performance in Qt-Based Applications
 
OpenGL Fixed Function to Shaders - Porting a fixed function application to “m...
OpenGL Fixed Function to Shaders - Porting a fixed function application to “m...OpenGL Fixed Function to Shaders - Porting a fixed function application to “m...
OpenGL Fixed Function to Shaders - Porting a fixed function application to “m...
 
Development with Qt for Windows CE
Development with Qt for Windows CEDevelopment with Qt for Windows CE
Development with Qt for Windows CE
 
Qt Tutorial - Part 1
Qt Tutorial - Part 1Qt Tutorial - Part 1
Qt Tutorial - Part 1
 
Creating Advanced GUIs for Low-power MCUs with Qt
Creating Advanced GUIs for Low-power MCUs with QtCreating Advanced GUIs for Low-power MCUs with Qt
Creating Advanced GUIs for Low-power MCUs with Qt
 
Qt quick (qml)
Qt quick (qml)Qt quick (qml)
Qt quick (qml)
 
Hildon 2.2: the Hildon toolkit for Fremantle
Hildon 2.2: the Hildon toolkit for FremantleHildon 2.2: the Hildon toolkit for Fremantle
Hildon 2.2: the Hildon toolkit for Fremantle
 
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
 
Treinamento Qt básico - aula I
Treinamento Qt básico - aula ITreinamento Qt básico - aula I
Treinamento Qt básico - aula I
 
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
 
Porting Motif Applications to Qt - Webinar
Porting Motif Applications to Qt - WebinarPorting Motif Applications to Qt - Webinar
Porting Motif Applications to Qt - Webinar
 
Qt
QtQt
Qt
 
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
 
Cross Platform Qt
Cross Platform QtCross Platform Qt
Cross Platform Qt
 
Qt for beginners part 1 overview and key concepts
Qt for beginners part 1   overview and key conceptsQt for beginners part 1   overview and key concepts
Qt for beginners part 1 overview and key concepts
 
Qt Workshop
Qt WorkshopQt Workshop
Qt Workshop
 
Driving Down Automotive Costs for Richer HMIs with Qt & i.MX RT1170
Driving Down Automotive Costs for Richer HMIs with Qt & i.MX RT1170Driving Down Automotive Costs for Richer HMIs with Qt & i.MX RT1170
Driving Down Automotive Costs for Richer HMIs with Qt & i.MX RT1170
 
Update on the open source browser space (16th GENIVI AMM)
Update on the open source browser space (16th GENIVI AMM)Update on the open source browser space (16th GENIVI AMM)
Update on the open source browser space (16th GENIVI AMM)
 

Similar to Migrating from Photon to Qt

Porting Motif Applications to Qt - Webinar
Porting Motif Applications to Qt - WebinarPorting Motif Applications to Qt - Webinar
Porting Motif Applications to Qt - Webinar
ICS
 
Qt for Python
Qt for PythonQt for Python
Qt for Python
ICS
 
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
Prabindh Sundareson
 
Qt for beginners part 4 doing more
Qt for beginners part 4   doing moreQt for beginners part 4   doing more
Qt for beginners part 4 doing more
ICS
 
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
ICS
 
Green Custard Friday Talk 22: Flutter
Green Custard Friday Talk 22: FlutterGreen Custard Friday Talk 22: Flutter
Green Custard Friday Talk 22: Flutter
Green Custard
 
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
Johan Thelin
 
Meet Qt
Meet QtMeet Qt
Qtframework
QtframeworkQtframework
Qtframework
Aditi Shrivastava
 
Network programming with Qt (C++)
Network programming with Qt (C++)Network programming with Qt (C++)
Network programming with Qt (C++)
Manohar Kuse
 
So I downloaded Qt, Now What?
So I downloaded Qt, Now What?So I downloaded Qt, Now What?
So I downloaded Qt, Now What?
ICS
 
So I Downloaded Qt, Now What?
So I Downloaded Qt, Now What?So I Downloaded Qt, Now What?
So I Downloaded Qt, Now What?
Janel Heilbrunn
 
PyQt Application Development On Maemo
PyQt Application Development On MaemoPyQt Application Development On Maemo
PyQt Application Development On Maemo
achipa
 
Andreas Jakl, Qt Symbian Maemo Quickstart
Andreas Jakl, Qt Symbian Maemo QuickstartAndreas Jakl, Qt Symbian Maemo Quickstart
Andreas Jakl, Qt Symbian Maemo Quickstart
NokiaAppForum
 
Qt Technical Presentation
Qt Technical PresentationQt Technical Presentation
Qt Technical Presentation
Daniel Rocha
 
Qt
QtQt
The Universal Developer: Deploying Modern Tcl/Tk Solutions on the Mac
The Universal Developer: Deploying Modern Tcl/Tk Solutions on the MacThe Universal Developer: Deploying Modern Tcl/Tk Solutions on the Mac
The Universal Developer: Deploying Modern Tcl/Tk Solutions on the Mac
Kevin Walzer
 
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
Nokia
 
Tekton showcase - CDF Summit Kubecon Barcelona 2019
Tekton showcase - CDF Summit Kubecon Barcelona 2019Tekton showcase - CDF Summit Kubecon Barcelona 2019
Tekton showcase - CDF Summit Kubecon Barcelona 2019
Christie Wilson
 

Similar to Migrating from Photon to Qt (20)

Porting Motif Applications to Qt - Webinar
Porting Motif Applications to Qt - WebinarPorting Motif Applications to Qt - Webinar
Porting Motif Applications to Qt - Webinar
 
Qt for Python
Qt for PythonQt for Python
Qt for Python
 
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
 
Qt for beginners part 4 doing more
Qt for beginners part 4   doing moreQt for beginners part 4   doing more
Qt for beginners part 4 doing more
 
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
 
Green Custard Friday Talk 22: Flutter
Green Custard Friday Talk 22: FlutterGreen Custard Friday Talk 22: Flutter
Green Custard Friday Talk 22: Flutter
 
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
 
Meet Qt
Meet QtMeet Qt
Meet Qt
 
Qtframework
QtframeworkQtframework
Qtframework
 
PyQt.pptx
PyQt.pptxPyQt.pptx
PyQt.pptx
 
Network programming with Qt (C++)
Network programming with Qt (C++)Network programming with Qt (C++)
Network programming with Qt (C++)
 
So I downloaded Qt, Now What?
So I downloaded Qt, Now What?So I downloaded Qt, Now What?
So I downloaded Qt, Now What?
 
So I Downloaded Qt, Now What?
So I Downloaded Qt, Now What?So I Downloaded Qt, Now What?
So I Downloaded Qt, Now What?
 
PyQt Application Development On Maemo
PyQt Application Development On MaemoPyQt Application Development On Maemo
PyQt Application Development On Maemo
 
Andreas Jakl, Qt Symbian Maemo Quickstart
Andreas Jakl, Qt Symbian Maemo QuickstartAndreas Jakl, Qt Symbian Maemo Quickstart
Andreas Jakl, Qt Symbian Maemo Quickstart
 
Qt Technical Presentation
Qt Technical PresentationQt Technical Presentation
Qt Technical Presentation
 
Qt
QtQt
Qt
 
The Universal Developer: Deploying Modern Tcl/Tk Solutions on the Mac
The Universal Developer: Deploying Modern Tcl/Tk Solutions on the MacThe Universal Developer: Deploying Modern Tcl/Tk Solutions on the Mac
The Universal Developer: Deploying Modern Tcl/Tk Solutions on the Mac
 
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
 
Tekton showcase - CDF Summit Kubecon Barcelona 2019
Tekton showcase - CDF Summit Kubecon Barcelona 2019Tekton showcase - CDF Summit Kubecon Barcelona 2019
Tekton showcase - CDF Summit Kubecon Barcelona 2019
 

Recently uploaded

Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
Donna Lenk
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
Globus
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 
Game Development with Unity3D (Game Development lecture 3)
Game Development  with Unity3D (Game Development lecture 3)Game Development  with Unity3D (Game Development lecture 3)
Game Development with Unity3D (Game Development lecture 3)
abdulrafaychaudhry
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
Łukasz Chruściel
 
AI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website CreatorAI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website Creator
Google
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Łukasz Chruściel
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Neo4j
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
Aftab Hussain
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
lorraineandreiamcidl
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
Alina Yurenko
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
Google
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
Shane Coughlan
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
abdulrafaychaudhry
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Crescat
 

Recently uploaded (20)

Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 
Game Development with Unity3D (Game Development lecture 3)
Game Development  with Unity3D (Game Development lecture 3)Game Development  with Unity3D (Game Development lecture 3)
Game Development with Unity3D (Game Development lecture 3)
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
 
AI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website CreatorAI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website Creator
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
 

Migrating from Photon to Qt

  • 1. © Integrated Computer Solutions, Inc. All Rights Reserved Migrating from QNX Photon to Qt Bobby Chawla <bchawla@ics.com> Integrated Computer Solutions, Inc.
  • 2. © Integrated Computer Solutions, Inc. All Rights Reserved Introduction ● Working with ICS for about four years now ● Taste for real-time software development ● Used to work with Process Control Systems for industry: ○ Pulp & Paper machines ○ Lots of QNX development ● Offered to work on QNX itself ● About five years developing various parts of Photon
  • 3. © Integrated Computer Solutions, Inc. All Rights Reserved Agenda ● Introduction ● What is (was) Photon? ● What is Qt? ● Anatomy of an application ● Architecture differences ● Qt Signals and slots ● Widget comparisons ● When to port ● Porting from QNX ● Conclusion
  • 4. © Integrated Computer Solutions, Inc. All Rights Reserved What is (was) Photon? ● Photon : A name with multiple meanings: ○ Light particle ○ QNX/Photon MicroGUI ■ typically used with Neutrino ○ Photon UI project (Javascript framework to create UIs) ○ Photon OS distribution … Probably More … .
  • 5. © Integrated Computer Solutions, Inc. All Rights Reserved What is (was) Photon? ● Photon : A name with multiple meanings: ○ Light particle ○ QNX/Photon MicroGUI ■ typically used with Neutrino ○ Photon UI project (Javascript framework to create UIs) ○ Photon OS distribution We are talking about the QNX/Photon MicroGUI .
  • 6. © Integrated Computer Solutions, Inc. All Rights Reserved What is (was) Photon… cont. ● Started in the Mid-90s ● Had a Windows 95 look and feel: ○ “modern” at the time ● Evolved with more GUI options
  • 7. © Integrated Computer Solutions, Inc. All Rights Reserved What is(was) Photon… cont. ● Deprecated Could say Depreciated - Appropriate verb ● QNX v6.32 - Full implementation ● QNX v6.4 - Reduced widget set: ○ Removed browser & email applications ○ Removed PtTerminal ■ though PtTty was still there ● QNX v6.5 - Essentially the windowing system was still there: ○ But not designed to be a desktop OS ● QNX v6.6 - Unsupported: ○ But die-hards could import the 6.5 executables ● QNX v7 - Unavailable - Now it’s deprecated
  • 8. © Integrated Computer Solutions, Inc. All Rights Reserved What is Qt? ● Cross-platform application framework ● Supports all major desktop, mobile, embedded platforms ○ Windows, Mac OS, Linux, iOS, Android, QNX, etc. ● Written in C++ ● Not just for GUI, but includes portable abstraction for most OS features ○ File i/o, strings, containers, networking, etc. ● Around since 1991 ● Used by approximately 1 million developers in over 70 industries ● Owned by The Qt Company ● Available under GPL/LGPL and commercial licenses
  • 9. © Integrated Computer Solutions, Inc. All Rights Reserved What is Qt? - Qt Widgets ● Traditional building blocks for GUI applications in Qt: ○ e.g. QButton, QLabel, QTextEdit ● Can use Qt Designer - a GUI builder for designing dialogs and screens ● Have native look on each platform ● Originally designed for desktop applications, but also usable on mobile and embedded.
  • 10. © Integrated Computer Solutions, Inc. All Rights Reserved What is Qt? - QML (aka Qt Quick) ● Simple JSON-like declarative language ● Provides basic elements to build up user interfaces ● Elements support properties, signals, methods ● Makes it easy to define animated, fluid, touchscreen interfaces ● Qt Quick Controls provide widget-like UI elements ● Backed by full JavaScript engine ● Qt Creator IDE has a QML Designer ○ developers typically write code by hand (QML Designer getting better) ● Mostly targeted at mobile and embedded ○ but also supported on desktop platforms
  • 11. © Integrated Computer Solutions, Inc. All Rights Reserved What is Qt? - Qt on QNX ● Qt has been available as an option for QNX development since 2010 ● Qt widgets provide similar classes and mechanisms to Photon’s ● Typically find source code to Qt, configure for QNX, and compile ● Given the current customer base of QNX-7 - QNX is encouraging QML: ○ Partially configured for QML already in Momentics ○ Since this presentation is about porting from Photon, ■ we will focus on Qt widgets
  • 12. © Integrated Computer Solutions, Inc. All Rights Reserved Anatomy of an Application ● At a high level, both Photon & Qt GUI applications are: ○ Event driven ○ Similar parent/child relationships ■ parent window ■ every widget has a parent which helps keep things organized ● e.g. when the parent gets deleted, the child cleans up as well ■ dialogs - children of parent’s windows ○ Interactions ■ Photon uses callbacks vs. Qt using “signals and slots” ○ Qt separates widgets from layout managers
  • 13. © Integrated Computer Solutions, Inc. All Rights Reserved Architecture Differences ● Photon (conceptually) is an entire graphical system: ○ Though not as well documented, just as easy to create an app that captures Photon events, thus being able to create your own: ■ graphics driver ■ mouse controller ■ screen capture app ■ virtual keyboard ■ other IO device
  • 14. © Integrated Computer Solutions, Inc. All Rights Reserved Architecture Differences… cont. ● Those of you familiar with Photon will know about: ○ Pg….() functions - Raw graphics functions ○ Ph….() functions - Open Photon channels, create regions, collect/emit events ○ Pt….() functions - Create, Manipulate & Destroy widgets ● Qt: ○ Qt widget classes map mostly to Pt….() functions ○ Mature ecosystem of other classes for portability & convenience ■ e.g. stacks, accessing filesystem, strings
  • 15. © Integrated Computer Solutions, Inc. All Rights Reserved Architecture Differences… cont. ● Typically Qt is run in a third-party’s windowing environment: ○ Qt has backends for different graphics rendering environments ■ X11/xcb, OpenGL/ES, Linux frame buffer, etc. ■ look & feel designed to look native on the device ● same application looks/behaves slightly differently on a Mac than on Linux or Windows ○ If working with a specialized board ■ need to speak with the hardware (BSP) vendor to interface with new devices
  • 16. © Integrated Computer Solutions, Inc. All Rights Reserved Architecture Differences… cont. Application development: PhAB , Qt Designer (GUI builder) & Qt Creator (IDE).
  • 17. © Integrated Computer Solutions, Inc. All Rights Reserved Architecture Differences… cont. ● Photon uses “PhAB”, ● Can compile/link in PhAB ● PhAB - not your average application builder: ○ No source code created for PhAB windows/dialog ○ GUI component info written as binary data as part of the executable
  • 18. © Integrated Computer Solutions, Inc. All Rights Reserved Architecture Differences… cont. ● Qt Creator (and Designer) is not your average application builder either: ○ Full development suite ○ Architecture-safe classes ○ PhAB/Photon users will appreciate how easily tasks get done (e.g. menus)
  • 19. © Integrated Computer Solutions, Inc. All Rights Reserved Architecture Differences… menus
  • 20. © Integrated Computer Solutions, Inc. All Rights Reserved Qt Signals & Slots ● Another term that can have different meanings: “Signals”: ○ QNX developers associate “Signals” as an operating system message ■ Signal can be passed from one process to another ■ Interrupts the receiving process, and process the signal ■ The call does not block the calling process ● Qt “Signals” are not the same as Linux/POSIX signals above: ○ Qt Signals & Slots are a one-to-many messaging system that lets Qt “Objects” communicate within a process ○ Could be blocking function call, or could be queued ○ No “return” values from a signal ● Which differ from Boost Signals/Slots - allow return values from the “slots”
  • 21. © Integrated Computer Solutions, Inc. All Rights Reserved Qt Signals & Slots… cont. ● Qt signals are an expanded form of callbacks that allow separation of UI elements from business logic ● Signals are emitted by Qt objects when event occurs (e.g. button pressed) ● Slots are methods that can be called in response to a signal ● Typically connect signals and slots at run-time ● Qt uses “moc” tool to generate meta object information about signals/slots ● Type safe alternative to callbacks, checked at compile time or run time
  • 22. © Integrated Computer Solutions, Inc. All Rights Reserved Widget Comparison - Menus and Options Functionality Photon Qt Major Differences Horizontal Menubar PtMenuBar QMenuBar QMenuBar has several insert Item methods. Pulldown Popup Menu PtMenu QMenu Qt provides a cleaner abstraction using QMenu. The common object for pulldowns popups, and menubars Menu button PtMenuButton QMenu Combo Box PtComboBox QComboBox Toggle or Multiple-selection options PtToggleButton (Pt_TOGGLE_RADIO) QRadioButton or QCheckBox
  • 23. © Integrated Computer Solutions, Inc. All Rights Reserved Widget Comparison - Dialogs Functionality Photon Qt Error PtAlert() QErrorMessage Information PtNotice() QMessageBox Question PtAlert() QMessageBox Warning PtAlert() QMessageBox Progress PtProgress widget QProgressDialog Simple Input PtPrompt() QInputDialog File Chooser PtFileSelection() QFileDialog HTML/Web display PtWebClient widget QWebView Generic/Custom PtWindow container QDialog ● Italicized Photon items (such as PtAlert()) are convenience functions which use widgets to build a dialog
  • 24. © Integrated Computer Solutions, Inc. All Rights Reserved Widget Comparison… cont. ● Examples of widgets that are not 1 to 1 relationships: ○ PtTimer ○ RtTrend ● Qt has a large user base with many contributors: ○ Many sophisticated Qt widgets that don't exist in Photon are available from 3rd party vendors
  • 25. © Integrated Computer Solutions, Inc. All Rights Reserved Widget Comparison - Containers vs. Layouts ● PtContainer (or it’s subclasses) allow the automatic placement of widgets in a: ○ FILL_LAYOUT (Horizontal / Vertical) ○ ROW_LAYOUT (Horizontal/Vertical with options for Justify, Wrap and Pack) ○ GRID_LAYOUT ○ ANCHOR_LAYOUT ● In Qt, layouts are more sophisticated: ○ Layouts are separated from any widget subclassed off of QWidget ○ Container widgets can manage their children using QWidget::setLayout()
  • 26. © Integrated Computer Solutions, Inc. All Rights Reserved When to Port / When to Consider Rewrite ● Photon is deprecated / newer hardware not supported ○ Eventually will run out of hardware options ○ Or user expectations for a device increase ● What code can you typically keep and what do you need to rewrite? ● Design aspects that makes it easier to port, e. g. ○ Good separation of UI and business logic. ○ Much of your application can be dissected into Model-View-Controller (MVC) portions
  • 27. © Integrated Computer Solutions, Inc. All Rights Reserved Object Oriented Design 101 ● Qt is based off C++: ○ Photon apps are usually ‘C’ based ○ Need to port some or all of your code to C++. ○ Your team may need to learn object-oriented design. ○ May require re-architecting (e.g. to separate GUI from business logic). ● C++ applications typically better at compartmentalizing, ○ Scale better for larger projects
  • 28. © Integrated Computer Solutions, Inc. All Rights Reserved Object Oriented Design “101”
  • 29. © Integrated Computer Solutions, Inc. All Rights Reserved Object Oriented Design 101… cont. ● Created the same application in Photon & Qt ● In Photon had a functional relation PtText → callback → PtSetArg( PtLabel ) ● Can do a similar connection with Qt: ○ QLineEdit → signal to QObject::AddHello → signal to QLabel ● However, a cleaner implementation is to create a ‘Hello’ widget: ○ Create a QHelloLabel as a subclass of QLabel, ○ QHelloLabel displays the string with ‘Hello’ prepended ○ QLineEdit → signal to QHelloLabel Less code, less portions that can break, easier to test, ….
  • 30. © Integrated Computer Solutions, Inc. All Rights Reserved Porting from QNX Note for native QNX-ers ● QNX has been, and continues to be a “Message passing” architecture: ○ Lightweight transition from one process to another ○ Designed for many thousands (millions) of messages ○ Many aspects of QNX based on message passing ○ Photon is no exception ● If porting to other operating systems: ○ Can’t rely as heavily on OS-level message passing ○ Buffered streams more common ○ QNX is a POSIX OS, therefore a port to Linux should be easier
  • 31. © Integrated Computer Solutions, Inc. All Rights Reserved Conclusion ● Most applications would have one to one mapping to Qt widgets ● Need help getting started? ICS developers: ○ Have many years of experience with Qt and QNX/Photon ○ Can assist you with the port (while your developers continue advancing with current development) ○ Can help you get started by analyzing your application and coming up with a plan of action
  • 32. © Integrated Computer Solutions, Inc. All Rights Reserved Questions?