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

PDF
Python - object oriented
PPTX
presentation industrial trainning at Locomotive workshop lucknow
DOC
AME Requisition Approval Heirarchy
PPTX
GUI components in Java
PDF
Qt Technology Overview for: MedAcuity
 
ODP
Cross Platform Qt
PPT
Qt S60 Technical Presentation Fn Stripped
PPTX
Python - object oriented
presentation industrial trainning at Locomotive workshop lucknow
AME Requisition Approval Heirarchy
GUI components in Java
Qt Technology Overview for: MedAcuity
 
Cross Platform Qt
Qt S60 Technical Presentation Fn Stripped

Similar to Migrating from Photon to Qt (20)

PDF
Meet Qt 6.0
 
PDF
Necessitas - Qt on Android - from FSCONS 2011
PDF
Qt Tutorial - Part 1
PDF
Qt 6 Chat - Are You Ready?
 
PPTX
Qt 6.2 lts vs. qt 5.15 the big feature parity comparison
 
PPTX
Intro to gui, cross platform and qt
PPTX
cpp-2013 #14 Основи Qt
PPTX
Qt for beginners part 1 overview and key concepts
 
PDF
PDF
Meet qt intro
PPTX
Building Cross-Platform Apps using Qt and Qyoto
PDF
Andreas Jakl Software Development on Nokia Deviceswith Qt
PDF
So I Downloaded Qt, Now What?
PDF
So I downloaded Qt, Now What?
 
ODP
ODP
Qt 5 - C++ and Widgets
PDF
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3
PDF
Cutest technology of them all - Forum Nokia Qt Webinar December 2009
PDF
Lessons Learned from Building 100+ C++/Qt/QML Devices
 
Meet Qt 6.0
 
Necessitas - Qt on Android - from FSCONS 2011
Qt Tutorial - Part 1
Qt 6 Chat - Are You Ready?
 
Qt 6.2 lts vs. qt 5.15 the big feature parity comparison
 
Intro to gui, cross platform and qt
cpp-2013 #14 Основи Qt
Qt for beginners part 1 overview and key concepts
 
Meet qt intro
Building Cross-Platform Apps using Qt and Qyoto
Andreas Jakl Software Development on Nokia Deviceswith Qt
So I Downloaded Qt, Now What?
So I downloaded Qt, Now What?
 
Qt 5 - C++ and Widgets
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3
Cutest technology of them all - Forum Nokia Qt Webinar December 2009
Lessons Learned from Building 100+ C++/Qt/QML Devices
 
Ad

More from ICS (20)

PDF
Understanding the EU Cyber Resilience Act
 
PDF
Porting Qt 5 QML Modules to Qt 6 Webinar
 
PDF
Medical Device Cybersecurity Threat & Risk Scoring
 
PDF
Exploring Wayland: A Modern Display Server for the Future
 
PDF
Threat Modeling & Risk Assessment Webinar: A Step-by-Step Example
 
PDF
8 Mandatory Security Control Categories for Successful Submissions
 
PDF
Future-Proofing Embedded Device Capabilities with the Qt 6 Plugin Mechanism.pdf
 
PDF
Choosing an Embedded GUI: Comparative Analysis of UI Frameworks
 
PDF
Medical Device Cyber Testing to Meet FDA Requirements
 
PDF
Threat Modeling and Risk Assessment Webinar.pdf
 
PDF
Secure-by-Design Using Hardware and Software Protection for FDA Compliance
 
PDF
Webinar On-Demand: Using Flutter for Embedded
 
PDF
A Deep Dive into Secure Product Development Frameworks.pdf
 
PDF
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
PDF
Practical Advice for FDA’s 510(k) Requirements.pdf
 
PDF
Accelerating Development of a Safety-Critical Cobot Welding System with Qt/QM...
 
PDF
Overcoming CMake Configuration Issues Webinar
 
PDF
Enhancing Quality and Test in Medical Device Design - Part 2.pdf
 
PDF
Designing and Managing IoT Devices for Rapid Deployment - Webinar.pdf
 
PDF
Quality and Test in Medical Device Design - Part 1.pdf
 
Understanding the EU Cyber Resilience Act
 
Porting Qt 5 QML Modules to Qt 6 Webinar
 
Medical Device Cybersecurity Threat & Risk Scoring
 
Exploring Wayland: A Modern Display Server for the Future
 
Threat Modeling & Risk Assessment Webinar: A Step-by-Step Example
 
8 Mandatory Security Control Categories for Successful Submissions
 
Future-Proofing Embedded Device Capabilities with the Qt 6 Plugin Mechanism.pdf
 
Choosing an Embedded GUI: Comparative Analysis of UI Frameworks
 
Medical Device Cyber Testing to Meet FDA Requirements
 
Threat Modeling and Risk Assessment Webinar.pdf
 
Secure-by-Design Using Hardware and Software Protection for FDA Compliance
 
Webinar On-Demand: Using Flutter for Embedded
 
A Deep Dive into Secure Product Development Frameworks.pdf
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Practical Advice for FDA’s 510(k) Requirements.pdf
 
Accelerating Development of a Safety-Critical Cobot Welding System with Qt/QM...
 
Overcoming CMake Configuration Issues Webinar
 
Enhancing Quality and Test in Medical Device Design - Part 2.pdf
 
Designing and Managing IoT Devices for Rapid Deployment - Webinar.pdf
 
Quality and Test in Medical Device Design - Part 1.pdf
 
Ad

Recently uploaded (20)

PDF
PTS Company Brochure 2025 (1).pdf.......
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PDF
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PPTX
ai tools demonstartion for schools and inter college
PDF
Softaken Excel to vCard Converter Software.pdf
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
DOCX
The Five Best AI Cover Tools in 2025.docx
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PDF
System and Network Administration Chapter 2
PDF
Understanding Forklifts - TECH EHS Solution
PDF
AI in Product Development-omnex systems
PPT
Introduction Database Management System for Course Database
PDF
Complete React Javascript Course Syllabus.pdf
PDF
System and Network Administraation Chapter 3
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PPTX
Operating system designcfffgfgggggggvggggggggg
PTS Company Brochure 2025 (1).pdf.......
Wondershare Filmora 15 Crack With Activation Key [2025
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
How to Choose the Right IT Partner for Your Business in Malaysia
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
ai tools demonstartion for schools and inter college
Softaken Excel to vCard Converter Software.pdf
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
The Five Best AI Cover Tools in 2025.docx
2025 Textile ERP Trends: SAP, Odoo & Oracle
System and Network Administration Chapter 2
Understanding Forklifts - TECH EHS Solution
AI in Product Development-omnex systems
Introduction Database Management System for Course Database
Complete React Javascript Course Syllabus.pdf
System and Network Administraation Chapter 3
How to Migrate SBCGlobal Email to Yahoo Easily
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Operating system designcfffgfgggggggvggggggggg

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?