This is a brief introduction about cross platform and GUI (graphical user interface), and the Qt framework.
these slides intended to newbie programmers who want to know about cross platform and GUI.
1. Introduction to GUI, Cross-
platform and Qt
By: Muhammad Sabry
Contacts: muhammadsabry1st@gmail.com
2. What does Cross-platform mean?
From software perspective, it is the development of
software that is said to be platform-independent. For a
piece of software to be considered cross-platform, it
must be able to function on more than one computer
architecture or operating system
Platform: refers to the hardware or the operating system
or a combination of both.
3. Cross-Platform Software Types:
Cross-platform software may be divided into two types: -
- one requires individual building or compilation for each
platform that it supports.
- The other one can be directly run on any platform
without special preparation, e.g., software written in
an interpreted language.
4. Challenges to cross-platform:
Testing cross-platform applications may be considerably
more complicated.
Different platforms often have different user interface
conventions
Scripting languages and virtual machines must be
translated into native executable code each time the
application is executed, imposing a performance
penalty
5. Introduction to GUI programming:
GUI (gooey) : allow the users to interact with devices through Graphics
opposed to the old text-based interface or CLI.
GUI Elements : Windows, Buttons, Menus, Text fields, scroll bars, etc… which
is so called widgets. Widgets can contain other widgets.
What is a widget? A widget is a visual element in a user interface.
GUI Library consist of: Most GUI library is a set of Classes to the different
element we interact with, data structure, database, networking, etc…
C++ GUI Libraries: wxWidget, GTK+, Qt, MFC.
6. Three main part of any GUI program:
Graphical component.
Event handlers (e.g., in Qt they called slots).
Application methods or functions.
7. Event driven programming:
When you perform an action on a graphical component
you generate an event. In event-driven
programming the program responds to these events.
The order of the events is determined by the user, not
the program.
8. Some Development Terminologies
IDE: (integrated development environment) a text editor with additional
support (e.g., Designer, Resource editor) compiling and debugging
applications. e.g., Visual Studio.
Library: is a chunk of code (Classes and functions) that you can call from
your own code, to help you do things more quickly/easily. e.g., Boost
Library.
API (application programming interface) is a term means the functions in a
library that you can call to ask it to do things for you - the interface to the
library.
SDK (software development kit) is a library (often with extra tool Debugger,
emulator, documentation, sample code, and tutorials.) that aid you in
developing code that uses a particular system (e.g. extension code for
using features of an operating system (Windows SDK), drawing 3D graphics
via a particular system (DirectX SDK)
9. Terminologies continues..
Toolkit: is like an SDK - it's a group of tools (and often code libraries)
that you can use to make it easier to access a device or system.
A framework is a big library that provides most (if not all) of the
services you need to write a vast range of applications.
Basically, all the control flow is already in the framework, and there's just
a bunch of predefined white spots that you can fill out with your code.
A library on the other hand is a collection of functionality that you can
call.
10. Introduction to Qt:
Qt is a cross-platform application and UI framework for developers
using C++ or QML.
Qt Creator is the supporting Qt IDE.
Qt is used mainly for developing application software with graphical
user interfaces (GUIs); however, programs without a GUI can be
developed.
Qt uses standard C++ with extensions
Qt supports many compilers, including the GCC C++ compiler and
the Visual Studio suite.
11. Introduction to Qt Continues: (Platforms)
Platform New features
Android Qt for Android,[19] formerly known as Necessitas.[20]
Embedded Linux
Qt for embedded platforms: personal digital
assistant, smartphone, etc.[21]
Integrity Qt for Integrity[22]
iOS Qt for iOS platforms (iPhone, iPad)[23]
OS X Qt for Apple OS X; supports applications on Cocoa[24]
QNX / BlackBerry 10
Qt for QNX[25] and the QNX-based BlackBerry
10 platform.[26][27]
VxWorks Qt for VxWorks.[28]
Wayland
Qt for Wayland.[29] Qt applications can switch between
graphical backends like X and Wayland at load time with
the -platform command line option.[30][31] This allows a
seamless transition of Qt applications from X11 to
Wayland.
Windows Qt for Microsoft Windows XP, Vista, 7,[32] 8
Windows CE
Qt for Windows CE 6 and Windows Embedded Compact
7.[33]
Windows RT
Support for WinRT-based Windows 8 apps and Windows
Phone 8[34] With 5.4 minimum supported version: Windows
Phone 8.1[35]
X11
Qt for X Window System (GNU/Linux, FreeBSD, HP-UX,
Solaris, AIX, etc.)[36]
13. Introduction to Qt Continues: (Languages)
Language
Name: description of
binding
License for open
source applications
License
for proprietary applications
Ada Qt5Ada LGPL
LGPL or Commercial proprie
tary[1]
C++ Qt – built-in[2] GPL or LGPL
LGPL or Commercial proprie
tary[1]
Go Go QML – (blog) LGPL LGPL
Haskell HsQML BSD BSD
JavaScript QtQuick – built into Qt[3] LGPL
LGPL or Commercial proprie
tary[1]
Python PyQt[4] GPL Commercial proprietary
Python PyOtherSide – only for QML Free Free
QML QtQuick – built into Qt[5] LGPL
LGPL or Commercial proprie
tary[1]
Ruby ruby-qml – only for QML MIT MIT
Language
Name: description of
binding
License for open source
applications
License for proprietary
applications
Qt 5 language bindings
14. Introduction to Qt Continues: (Editions)
Community.
Indie Mobile.
Professional and Enterprise.
15. Introduction to Qt Continues: (History)
Trolltech (1991–2008)
Nokia (2008–2011)
Digia (2012–2014)
Qt Company (2014-present)
Qt Project (2011–present)