SlideShare uma empresa Scribd logo
1 de 28
Qt Application Development
Dragoş Acostăchioaie
http://www.unixinside.org
dragos@unixinside.org
Open Source Camp, Iași, 7 - 8 mai 2016
Dragoş Acostăchioaie - http://www.unixinside.org
Ce este Qt
Qt. Code less. Create more. Deploy everywhere
✗ Facilitează dezvoltarea de aplicații și interfețe utilizator independente de platformă
✗ Este suportată o largă varietate de platforme desktop, mobile și embedded
✗ Nu este necesară rescrierea codului sursă
✗ Este open-source
Open Source Camp, Iași, 7 - 8 mai 2016
Dragoş Acostăchioaie - http://www.unixinside.org
Avantaje de a folosi Qt
✗ un singur cod sursă funcţionează fără modificări pe platforme diferite
(write once, run everywhere – vezi şi paradigma de portare a soluţiilor open source)
✗ performanţe superioare faţă de limbajele care rulează într-o maşină virtuală (ex Java),
fiindcă codul binar se execută nativ, rezultând un consum semnificativ mai redus de
resurse
✗ utilizează sistemul grafic al sistemului de operare pe care rulează; astfel, aplicaţiile au
aspectul şi comportamentul nativ al sistemului gazdă
✗ trecerea de la un sistem de operare la altul nu necesită modificări ale codului sursă, ci
doar compilarea acestuia pe fiecare platformă în parte (dacă nu s-au folosit
functionalităţi/biblioteci specifice)
✗ asigură codul sursă împotriva schimbărilor viitoare ale platformelor gazdă (la nivel
sursă sau binar; dezvoltatorii se pot astfel concentra pe dezvoltarea aplicaţiilor, nu pe
modificările API-ului)
✗ pot fi atinse mai uşor pieţe multiple (dedicate diferitelor sisteme de operare), cu costuri
mai mici de mentenanță a codului
Open Source Camp, Iași, 7 - 8 mai 2016
Dragoş Acostăchioaie - http://www.unixinside.org
✗ 1994 – este lansată prima versiune Qt, de către Trolltech (Norvegia)
✗ 2000 – Qt pentru platforma X11 este lansat sub licență GPL v2
✗ Iunie 2005 – Qt versiunea 4 (reprezintă un progres considerabil faţă de versiunile
anterioare)
✗ Iunie 2008 – Trolltech este cumpărat de Nokia (progres considerabil în dezvoltarea Qt pe
platforme mobile)
✗ 2011 – Digia (Finlanda) cumpără Qt de la Nokia
✗ Decembrie 2012 – este lansat Qt 5, având model de dezvoltare open source
✗ Septembrie 2014 – Qt este transferat catre Qt Company, aparținând Digia
Open Source Camp, Iași, 7 - 8 mai 2016
Scurt istoric
Dragoş Acostăchioaie - http://www.unixinside.org
✗ Mediul desktop KDE și majoritatea aplicațiilor KDE
✗ Ubuntu Touch
✗ webOS
✗ Skype
✗ VLC media player
✗ Google Earth
✗ Aplicații din domeniul auto (Tesla Model S)
✗ Numeroase companii: AMD, European Space Agency, Lucasfilm, Walt Disney Animation
Studios, Volvo, Siemens, Panasonic, US Army Research Laboratory
Open Source Camp, Iași, 7 - 8 mai 2016
Aplicații care utilizează Qt
Dragoş Acostăchioaie - http://www.unixinside.org
Pe ce platforme rulează Qt
Platforme de tip Desktop
✗ Linux/X11, dar și alte “UNIX flavours”
(FreeBSD, Solaris, HP-UX, AIX)
✗ Linux/Wayland
✗ MacOS
✗ Windows
Platforme Mobile
✗ Android
✗ iOS
✗ Windows
Platforme Embedded
✗ Embedded Android
✗ Embedded Linux
✗ Windows Embedded, Windows CE, WinRT
✗ Real-time operating systems (ex QNX, VxWorks)
Open Source Camp, Iași, 7 - 8 mai 2016
Dragoş Acostăchioaie - http://www.unixinside.org
În ce limbaje putem programa folosind Qt
✗ Limbaje native: C++ și QML
✗ QML – limbaj declarativ care permite descrierea interfeței utilizator, alcătuită din
componente vizuale și definirea modurilor de interacțiune/relaționare dintre acestea
✗ Poate interacționa cu alte limbaje (engl. language bindings): Java (QtJambi), Ruby,
C#, C++11
✗ Limbaje de scripting suportate: QML (nativ), JavaScript, Phyton
Open Source Camp, Iași, 7 - 8 mai 2016
Dragoş Acostăchioaie - http://www.unixinside.org
Ce medii integrate sunt compatibile cu Qt
✗ Qt Creator
✗ Eclipse
✗ Microsoft Visual Studio
Open Source Camp, Iași, 7 - 8 mai 2016
http://qt.io
Dragoş Acostăchioaie - http://www.unixinside.org
Ce poate face
Qt Creator
✗ Gestiunea proiectului
✗ Editarea codului sursă
✗ Controlul versiunilor
✗ Proiectarea interfeței
✗ Help integrat
✗ Generarea codului binar
✗ Depanarea aplicaţiei
✗ Publicarea aplicației
Open Source Camp, Iași, 7 - 8 mai 2016
Dragoş Acostăchioaie - http://www.unixinside.org
Ce poate face Qt Creator
Vrăjitor (wizard) pentru proiecte Qt
✗ realizează proiecte noi Qt
✗ generează automat proiectul şi fişierele de bază
Editor avansat de cod sursă C++/QML/Javascript
✗ syntax highlighting
✗ completare automată a codului
✗ marcarea automată a erorilor de sintaxă în timpul editării
✗ auto-indentare
✗ posibilitatea de expandare/restrângere a funcţiilor
✗ căutare incrementală a cuvintelor-cheie în timpul editării
✗ comutarea uşoară între declaraţia şi definiţia unei metode
✗ posibilitatea de a face semne de carte în cadrul codului sursă
✗ posibilitatea de a lucra fără mouse şi de a deschide ferestre de editare multiple
Open Source Camp, Iași, 7 - 8 mai 2016
Dragoş Acostăchioaie - http://www.unixinside.org
Proiectarea interfeței utilizator cu Qt Creator
Qt Designer
✗ Utilizat pentru proiectarea interfeței utilizator a aplicațiilor pe platforme desktop
✗ Se bazează pe editarea de widget-uri și form-uri
✗ Permite utilizarea mecanismului de semnale și sloturi
✗ Interfața utilizator este salvată în fișiere XML
Qt Quick Designer
✗ Utilizat pentru proiectarea interfeței utilizator a aplicațiilor pe platforme mobile
✗ Permite două moduri de lucru, editare și design
✗ Suportă machete de interfață multiple (ex telefon / tabletă / desktop), fără a
necesita modificarea codului sursă
Open Source Camp, Iași, 7 - 8 mai 2016
Dragoş Acostăchioaie - http://www.unixinside.org
Ce poate face Qt Creator
Help pentru biblioteca Qt integrat
✗ poate fi accesat în timpul editării prin poziţionarea pe un cuvânt-cheie
Sistem de compilare a proiectului
✗ prin intermediul sistemului qmake (propriu Qt) sau prin Cmake
Sistem de gestiune a fişierelor din proiect
✗ permite localizarea uşoară a unui fişier din proiect după tipul şi numele acestuia
Sisteme de control al versiunilor
✗ sunt suportate: Git, Subversion (SVN), CVS şi Perforce
Open Source Camp, Iași, 7 - 8 mai 2016
Dragoş Acostăchioaie - http://www.unixinside.org
Ce poate face Qt Creator
Compilarea aplicației
✗ Sunt suportate gcc, gdb, Clang precum și Microsoft Visual Studio compiler
✗ Pot fi stabilite individual configurările pentru fiecare platformă în parte și se poate
comuta rapid între platforme
✗ Se pot crea versiuni diferite ale proiectului, pentru a păstra separat codul sursă
dependent de platformă
✗ Generează automat pachetele care vor transferate pe dispozitivul mobil în vederea
executării aplicației direct pe acesta
Open Source Camp, Iași, 7 - 8 mai 2016
Dragoş Acostăchioaie - http://www.unixinside.org
Ce poate face Qt Creator
Depanarea aplicației
✗ Pot fi stabilite puncte de întrerupere, rula aplicaţia linie-cu-linie sau instrucţiune-cu-
instrucţiune, examina conţinutul variabilelor locale şi globale
✗ Permite depanarea inclusiv a funcțiilor Javascript
✗ Dacă aplicația este testată direct pe dispozitivul mobil sau în emulator, mesajele
vor apărea în consola QtCreator
✗ Dacă se stabilesc puncte de oprire (breakpoints), în consola QML/Javascript pot fi
executate expresii Javascript
✗ În timpul execuției, poate fi explorată structura obiectelor
Open Source Camp, Iași, 7 - 8 mai 2016
Dragoş Acostăchioaie - http://www.unixinside.org
Ce poate face Qt Creator
Publicarea aplicației
✗ Permite crearea pachetelor necesare publicării aplicației pentru dispozitive mobile,
utilizând magazinele de aplicații (App Store, Google Play, Windows Store)
Qt Installer
✗ Arhitectură care oferă un set de instrumente şi utilitare pentru realizarea de sisteme
de instalare ale aplicaţiilor
✗ Funcţionează pe Linux, MacOS şi Windows şi are aspectul nativ al platformei gazdă
✗ Sistemul de instalare este configurabil, putându-se adăuga noi widget-uri şi crea
scripturi pentru a realiza operaţiuni noi
✗ Sistemul de instalare poate fi offline (conţin toate componentele necesare) sau
online (conţinutul poate fi descărcat de pe un server Web)
✗ Oferă şi posibilitatea de actualizare ulterioară a conţinutului aplicaţiei
http://doc.qt.io/qt-5/publishtogoogleplay.html
Open Source Camp, Iași, 7 - 8 mai 2016
Dragoş Acostăchioaie - http://www.unixinside.org
Qt are o structură modulară
http://doc.qt.io/qt-5/qtmodules.html
Qt Essentials
✗ Qt Core - provides core non-GUI functionality
✗ Qt GUI - provides the basic enablers for graphical applications
✗ Qt Multimedia - provides audio, video, radio and camera functionality
✗ Qt Network - provides classes to make network programming easier and portable
✗ Qt QML - classes for QML and JavaScript languages
✗ Qt Quick - provides classes for embedding Qt Quick2 in Qt/C++ applications
✗ Qt SQL - provides a driver layer, SQL API layer, and a user interface layer for SQL db
✗ Qt Test - classes for unit testing Qt applications and libraries
✗ Qt WebKit - provides a web browser engine (WebKit2)
✗ Qt Widgets - extends Qt GUI with C++ widget functionality
Open Source Camp, Iași, 7 - 8 mai 2016
Dragoş Acostăchioaie - http://www.unixinside.org
Qt are o structură modulară
http://doc.qt.io/qt-5/qtmodules.html
Qt Add-ons
✗ Qt Bluetooth – enables basic Bluetooth operations
✗ Qt D-Bus - Inter-Process Communication using the D-Bus protocol (UNIX-only)
✗ Qt Graphical Effects - graphical effects for use with Qt Quick 2
✗ Qt Image Formats - plugins for additional image formats
✗ Qt Location – location services support
✗ Qt NFC – provides connectivity between NFC enabled devices
✗ Qt OpenGL - offers classes that make it easy to use OpenGL
✗ Qt Positioning - provides positioning information
✗ Qt Print Support - provides classes to make printing easier and portable
✗ Qt Sensors - Provides classes for reading sensor data
✗ Qt Serial Port - classes that enable access to a serial port
✗ Qt Script - provides classes for making Qt applications scriptable
✗ Qt SVG - provides functionality for handling SVG images
✗ Qt XML - implementations of SAX and DOM
✗ Qt XML Patterns - support for XPath, XQuery, XSLT and XML schema validation
Open Source Camp, Iași, 7 - 8 mai 2016
Dragoş Acostăchioaie - http://www.unixinside.org
Qt are o structură modulară
http://doc.qt.io/qt-5/qtmodules.html
Qt Tools
✗ Qt Designer – classes for extending Qt Designer
✗ Qt Help - classes for integrating online documentation into applications
✗ Qt UI Tools - classes to handle the forms created in Qt Designe
Open Source Camp, Iași, 7 - 8 mai 2016
Dragoş Acostăchioaie - http://www.unixinside.org
✗ Permite execuția de aplicații Qt5 pe dispozitive care rulează Android v2.3.3 sau mai nouă
✗ Sunt suportate toate modulele Qt, exceptând Qt WebKit, Qt NFC, Qt SerialPort și cele
specifice unor platforme (Qt MacExtras, Qt WindowsExtras, Qt X11Extras)
Ce este Qt pentru Android
http://doc.qt.io/qt-5/android-support.html
Open Source Camp, Iași, 7 - 8 mai 2016
Dragoş Acostăchioaie - http://www.unixinside.org
✗ Android SDK Tools (instrumente pentru dezvoltarea și depanarea de aplicații Android)
✗ Android NDK (permite dezvoltarea de cod pentru Android in C/C++)
✗ Apache Ant v1.8 sau mai nouă (instrumente pentru generarea de aplicații Android)
✗ Java SE Development Kit (JDK) v6 sau mai nouă. Pe Linux putem utiliza și OpenJDK
✗ pe Windows, este necesar și Android Debug Bridge (ADB) driver
Ce ne trebuie pentru platforma Android
http://doc.qt.io/qt-5/androidgs.html
Open Source Camp, Iași, 7 - 8 mai 2016
Dragoş Acostăchioaie - http://www.unixinside.org
✗ Executare direct pe dispozitiv. Consola de mesaje se va regăsi în QtCreator.
Înainte de conectarea prin USB a dispozitivului, trebuie activat USB Debugging pe acesta
✗ Executare pe calculator. Poate fi aleasă platforma pe care se compilează/execută
proiectul.
✗ Executare în emulator Android. În prealabil trebuie creat un AVD (Android Virtual Device)
și stabilite proprietățile dispozitivului virtual.
Cum executăm aplicația Android
doc.qt.io/qtcreator/creator-developing-android.html
Open Source Camp, Iași, 7 - 8 mai 2016
Dragoş Acostăchioaie - http://www.unixinside.org
✗ Permite execuția de aplicații Qt5 pe dispozitive care rulează iOS
✗
Cerințe minime: iPhone 3GS, iPod touch 3rd
gen, iPad2, iPad mini
✗ Este necesar Xcode (Windows sau MacOS)
✗ În codul sursă pot fi utilizate C++ și Objective-C (compilator Clang)
Ce este Qt pentru iOS
http://doc.qt.io/qt-5/ios-support.html
Open Source Camp, Iași, 7 - 8 mai 2016
Dragoş Acostăchioaie - http://www.unixinside.org
#include <QApplication>
#include <QQmlApplicationEngine>
#include <QQmlContext>
#include "background.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QQmlApplicationEngine engine;
// încărcare componentă vizuală
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
Background backgrd;
// expunere C++ la QML
engine.rootContext()->setContextProperty("app", &backgrd);
return app.exec();
}
Exemplu de aplicație pentru dispozitiv mobil
Open Source Camp, Iași, 7 - 8 mai 2016
Dragoş Acostăchioaie - http://www.unixinside.org
#ifndef BACKGROUND
#define BACKGROUND
#include <QObject>
class Background : public QObject
{
Q_OBJECT
public:
inline Background(QObject *parent = 0) : QObject(parent) { }
// apelabilă din QML
Q_INVOKABLE inline bool autentificare(const QString &nume,
const QString &parola)
{
return (nume == "admin" && parola == "admin");
}
};
#endif // BACKGROUND
Open Source Camp, Iași, 7 - 8 mai 2016
Exemplu de aplicație pentru dispozitiv mobil
Dragoş Acostăchioaie - http://www.unixinside.org
import QtQuick 2.4
import QtQuick.Controls 1.3
import QtQuick.Window 2.2
import QtQuick.Dialogs 1.2
import QtQuick.Layouts 1.1
ApplicationWindow {
title: "Autentificare"
width: 640
height: 480
visible: true
MessageDialog {
id: dialog
title: "Mesaj"
icon: StandardIcon.Question
// proprietate atașată (binding) - se actualizează la schimbarea valorii
text: "Rezultat autentificare: " + rez
standardButtons: StandardButton.Ok
property string rez
}
Open Source Camp, Iași, 7 - 8 mai 2016
Exemplu de aplicație pentru dispozitiv mobil
Dragoş Acostăchioaie - http://www.unixinside.org
function afisareRezultat(stare) {
dialog.rez = stare
dialog.open()
}
GridLayout {
anchors.centerIn: parent
columns: 2
rows: 4
Text {
text: "Autentificare"
Layout.columnSpan: 2
Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
}
Open Source Camp, Iași, 7 - 8 mai 2016
Exemplu de aplicație pentru dispozitiv mobil
Dragoş Acostăchioaie - http://www.unixinside.org
Text { text: "Nume:" }
TextField { id: numeEdit }
Text { text: "Parola:" }
TextField { id: parolaEdit; echoMode: TextInput.Password }
Item { Layout.fillWidth: true }
Button {
text: "OK"
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
onClicked: {
var result = app.autentificare(numeEdit.text,
parolaEdit.text)
afisareRezultat(result ? "Succes" : "Esuata")
}
}
}
}
Open Source Camp, Iași, 7 - 8 mai 2016
Exemplu de aplicație pentru dispozitiv mobil
Dragoş Acostăchioaie - http://www.unixinside.org
Resurse
✗ Qt documentation – http://doc.qt.io
✗ Mark Summerfield books - http://www.qtrac.eu/marksummerfield.html
✗ Learning Qt videos - https://www.ics.com/learning/icsnetwork
Open Source Camp, Iași, 7 - 8 mai 2016

Mais conteúdo relacionado

Destaque

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 developmentdftaiwo
 
The Mobile Market and Qt
The Mobile Market and QtThe Mobile Market and Qt
The Mobile Market and QtEspen Riskedal
 
Building Cross-Platform Apps using Qt and Qyoto
Building Cross-Platform Apps using Qt and QyotoBuilding Cross-Platform Apps using Qt and Qyoto
Building Cross-Platform Apps using Qt and QyotoJeff Alstadt
 
Targeting Android with Qt
Targeting Android with QtTargeting Android with Qt
Targeting Android with QtEspen Riskedal
 
Build Cutting edge Mobile Apps using QML and JavaScript for MeeGo N9: Linux F...
Build Cutting edge Mobile Apps using QML and JavaScript for MeeGo N9: Linux F...Build Cutting edge Mobile Apps using QML and JavaScript for MeeGo N9: Linux F...
Build Cutting edge Mobile Apps using QML and JavaScript for MeeGo N9: Linux F...Raj Lal
 
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 reviewUday Kothari
 
Qt Tutorial - Part 1
Qt Tutorial - Part 1Qt Tutorial - Part 1
Qt Tutorial - Part 1rmitc
 
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 moreICS
 
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 FrameworkZachary Blair
 
Qt Technical Presentation
Qt Technical PresentationQt Technical Presentation
Qt Technical PresentationDaniel Rocha
 
"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
 
Qt for Beginners Part 3 - QML and Qt Quick
Qt for Beginners Part 3 - QML and Qt QuickQt for Beginners Part 3 - QML and Qt Quick
Qt for Beginners Part 3 - QML and Qt QuickICS
 
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 Nativeaccount inactive
 
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 conceptsICS
 
Best Practices in Qt Quick/QML - Part II
Best Practices in Qt Quick/QML - Part IIBest Practices in Qt Quick/QML - Part II
Best Practices in Qt Quick/QML - Part IIICS
 

Destaque (20)

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
 
Cross platform development
Cross platform developmentCross platform development
Cross platform development
 
The Mobile Market and Qt
The Mobile Market and QtThe Mobile Market and Qt
The Mobile Market and Qt
 
Qt Creator Bootcamp
Qt Creator BootcampQt Creator Bootcamp
Qt Creator Bootcamp
 
Qt quick (qml)
Qt quick (qml)Qt quick (qml)
Qt quick (qml)
 
Building Cross-Platform Apps using Qt and Qyoto
Building Cross-Platform Apps using Qt and QyotoBuilding Cross-Platform Apps using Qt and Qyoto
Building Cross-Platform Apps using Qt and Qyoto
 
Targeting Android with Qt
Targeting Android with QtTargeting Android with Qt
Targeting Android with Qt
 
Qt Qml
Qt QmlQt Qml
Qt Qml
 
Build Cutting edge Mobile Apps using QML and JavaScript for MeeGo N9: Linux F...
Build Cutting edge Mobile Apps using QML and JavaScript for MeeGo N9: Linux F...Build Cutting edge Mobile Apps using QML and JavaScript for MeeGo N9: Linux F...
Build Cutting edge Mobile Apps using QML and JavaScript for MeeGo N9: Linux F...
 
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
 
Qt Tutorial - Part 1
Qt Tutorial - Part 1Qt Tutorial - Part 1
Qt Tutorial - Part 1
 
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
 
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 Technical Presentation
Qt Technical PresentationQt Technical Presentation
Qt Technical Presentation
 
"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...
 
Qt for Beginners Part 3 - QML and Qt Quick
Qt for Beginners Part 3 - QML and Qt QuickQt for Beginners Part 3 - QML and Qt Quick
Qt for Beginners Part 3 - QML and Qt Quick
 
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 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
 
Introduction to Qt
Introduction to QtIntroduction to Qt
Introduction to Qt
 
Best Practices in Qt Quick/QML - Part II
Best Practices in Qt Quick/QML - Part IIBest Practices in Qt Quick/QML - Part II
Best Practices in Qt Quick/QML - Part II
 

Semelhante a Qt Application Development

Referat_Java_Creanga_An_II_INFO.pdf
Referat_Java_Creanga_An_II_INFO.pdfReferat_Java_Creanga_An_II_INFO.pdf
Referat_Java_Creanga_An_II_INFO.pdfCreangaMadalina1
 
Cu codul în "nori"
Cu codul în "nori"Cu codul în "nori"
Cu codul în "nori"Sabin Buraga
 
Limbajul java
Limbajul javaLimbajul java
Limbajul javaCromina
 
CLIW 2017-2018 (2/12) Arhitectura navigatorului Web
CLIW 2017-2018 (2/12) Arhitectura navigatorului WebCLIW 2017-2018 (2/12) Arhitectura navigatorului Web
CLIW 2017-2018 (2/12) Arhitectura navigatorului WebSabin Buraga
 
Prezentare proiect GiSHEO - Marian Neagu
Prezentare proiect GiSHEO - Marian NeaguPrezentare proiect GiSHEO - Marian Neagu
Prezentare proiect GiSHEO - Marian Neaguvasile33
 
Lupu Vitaliy Bachelor thesis Presentation
Lupu Vitaliy Bachelor thesis PresentationLupu Vitaliy Bachelor thesis Presentation
Lupu Vitaliy Bachelor thesis Presentationlogan123
 
Software geospațial open source. O alternativă completă la soluțiile propriet...
Software geospațial open source. O alternativă completă la soluțiile propriet...Software geospațial open source. O alternativă completă la soluțiile propriet...
Software geospațial open source. O alternativă completă la soluțiile propriet...vasile33
 
STAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului WebSTAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului WebSabin Buraga
 
Biblioteci JavaScript pentru Ajax.pptx
Biblioteci JavaScript pentru Ajax.pptxBiblioteci JavaScript pentru Ajax.pptx
Biblioteci JavaScript pentru Ajax.pptxCostea112
 
Interactiunea cu Utilizatorul în Python, Java.pptx
Interactiunea cu Utilizatorul în Python, Java.pptxInteractiunea cu Utilizatorul în Python, Java.pptx
Interactiunea cu Utilizatorul în Python, Java.pptxrefewe9176
 
CLIW 2015-2016 (2/13) Arhitectura navigatorului Web
CLIW 2015-2016 (2/13) Arhitectura navigatorului WebCLIW 2015-2016 (2/13) Arhitectura navigatorului Web
CLIW 2015-2016 (2/13) Arhitectura navigatorului WebSabin Buraga
 
Conexiuni 2013 - Windows 8, Noul Office si solutii de productivitate in cloud...
Conexiuni 2013 - Windows 8, Noul Office si solutii de productivitate in cloud...Conexiuni 2013 - Windows 8, Noul Office si solutii de productivitate in cloud...
Conexiuni 2013 - Windows 8, Noul Office si solutii de productivitate in cloud...Asociatia Techsoup Romania
 
catana-Wordpress application deployment
catana-Wordpress application deploymentcatana-Wordpress application deployment
catana-Wordpress application deploymentIonut Catana
 
Realizarea unui cloud privat cu tehnologii open-source
Realizarea unui cloud privat cu tehnologii open-sourceRealizarea unui cloud privat cu tehnologii open-source
Realizarea unui cloud privat cu tehnologii open-sourceDragos Tudor Acostachioaie
 

Semelhante a Qt Application Development (20)

Referat_Java_Creanga_An_II_INFO.pdf
Referat_Java_Creanga_An_II_INFO.pdfReferat_Java_Creanga_An_II_INFO.pdf
Referat_Java_Creanga_An_II_INFO.pdf
 
Cu codul în "nori"
Cu codul în "nori"Cu codul în "nori"
Cu codul în "nori"
 
Irina Cureraru
Irina CureraruIrina Cureraru
Irina Cureraru
 
Limbajul java
Limbajul javaLimbajul java
Limbajul java
 
CLIW 2017-2018 (2/12) Arhitectura navigatorului Web
CLIW 2017-2018 (2/12) Arhitectura navigatorului WebCLIW 2017-2018 (2/12) Arhitectura navigatorului Web
CLIW 2017-2018 (2/12) Arhitectura navigatorului Web
 
Prezentare proiect GiSHEO - Marian Neagu
Prezentare proiect GiSHEO - Marian NeaguPrezentare proiect GiSHEO - Marian Neagu
Prezentare proiect GiSHEO - Marian Neagu
 
Lupu Vitaliy Bachelor thesis Presentation
Lupu Vitaliy Bachelor thesis PresentationLupu Vitaliy Bachelor thesis Presentation
Lupu Vitaliy Bachelor thesis Presentation
 
Curs java
Curs javaCurs java
Curs java
 
Software geospațial open source. O alternativă completă la soluțiile propriet...
Software geospațial open source. O alternativă completă la soluțiile propriet...Software geospațial open source. O alternativă completă la soluțiile propriet...
Software geospațial open source. O alternativă completă la soluțiile propriet...
 
Microsoft zitec
Microsoft  zitecMicrosoft  zitec
Microsoft zitec
 
STAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului WebSTAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului Web
 
Raytracing Distribuit
Raytracing DistribuitRaytracing Distribuit
Raytracing Distribuit
 
Biblioteci JavaScript pentru Ajax.pptx
Biblioteci JavaScript pentru Ajax.pptxBiblioteci JavaScript pentru Ajax.pptx
Biblioteci JavaScript pentru Ajax.pptx
 
Proiect pw
Proiect pwProiect pw
Proiect pw
 
Interactiunea cu Utilizatorul în Python, Java.pptx
Interactiunea cu Utilizatorul în Python, Java.pptxInteractiunea cu Utilizatorul în Python, Java.pptx
Interactiunea cu Utilizatorul în Python, Java.pptx
 
CLIW 2015-2016 (2/13) Arhitectura navigatorului Web
CLIW 2015-2016 (2/13) Arhitectura navigatorului WebCLIW 2015-2016 (2/13) Arhitectura navigatorului Web
CLIW 2015-2016 (2/13) Arhitectura navigatorului Web
 
OpenSUSE 11.2
OpenSUSE 11.2OpenSUSE 11.2
OpenSUSE 11.2
 
Conexiuni 2013 - Windows 8, Noul Office si solutii de productivitate in cloud...
Conexiuni 2013 - Windows 8, Noul Office si solutii de productivitate in cloud...Conexiuni 2013 - Windows 8, Noul Office si solutii de productivitate in cloud...
Conexiuni 2013 - Windows 8, Noul Office si solutii de productivitate in cloud...
 
catana-Wordpress application deployment
catana-Wordpress application deploymentcatana-Wordpress application deployment
catana-Wordpress application deployment
 
Realizarea unui cloud privat cu tehnologii open-source
Realizarea unui cloud privat cu tehnologii open-sourceRealizarea unui cloud privat cu tehnologii open-source
Realizarea unui cloud privat cu tehnologii open-source
 

Mais de Dragos Tudor Acostachioaie (10)

Ce mai este nou in open-source si nu numai
Ce mai este nou in open-source si nu numaiCe mai este nou in open-source si nu numai
Ce mai este nou in open-source si nu numai
 
Linux distributions. Ubuntu Server
Linux distributions. Ubuntu ServerLinux distributions. Ubuntu Server
Linux distributions. Ubuntu Server
 
Dela e-mail la Social Web
Dela e-mail la Social WebDela e-mail la Social Web
Dela e-mail la Social Web
 
Imbunatatirea securitatii sistemelor Linux cu ajutorul grsecurity
Imbunatatirea securitatii sistemelor Linux cu ajutorul grsecurityImbunatatirea securitatii sistemelor Linux cu ajutorul grsecurity
Imbunatatirea securitatii sistemelor Linux cu ajutorul grsecurity
 
Remember
RememberRemember
Remember
 
Moodle patru ani de ectivitate în învăţământul
Moodle   patru ani de ectivitate în învăţământulMoodle   patru ani de ectivitate în învăţământul
Moodle patru ani de ectivitate în învăţământul
 
Qt detaliu
Qt detaliuQt detaliu
Qt detaliu
 
Introducere in Flex si AIR
Introducere in Flex si AIRIntroducere in Flex si AIR
Introducere in Flex si AIR
 
Razboiul din fiecare birou
Razboiul din fiecare birouRazboiul din fiecare birou
Razboiul din fiecare birou
 
Linux ca platforma pentru dezvoltare
Linux ca platforma pentru dezvoltareLinux ca platforma pentru dezvoltare
Linux ca platforma pentru dezvoltare
 

Qt Application Development

  • 1. Qt Application Development Dragoş Acostăchioaie http://www.unixinside.org dragos@unixinside.org Open Source Camp, Iași, 7 - 8 mai 2016
  • 2. Dragoş Acostăchioaie - http://www.unixinside.org Ce este Qt Qt. Code less. Create more. Deploy everywhere ✗ Facilitează dezvoltarea de aplicații și interfețe utilizator independente de platformă ✗ Este suportată o largă varietate de platforme desktop, mobile și embedded ✗ Nu este necesară rescrierea codului sursă ✗ Este open-source Open Source Camp, Iași, 7 - 8 mai 2016
  • 3. Dragoş Acostăchioaie - http://www.unixinside.org Avantaje de a folosi Qt ✗ un singur cod sursă funcţionează fără modificări pe platforme diferite (write once, run everywhere – vezi şi paradigma de portare a soluţiilor open source) ✗ performanţe superioare faţă de limbajele care rulează într-o maşină virtuală (ex Java), fiindcă codul binar se execută nativ, rezultând un consum semnificativ mai redus de resurse ✗ utilizează sistemul grafic al sistemului de operare pe care rulează; astfel, aplicaţiile au aspectul şi comportamentul nativ al sistemului gazdă ✗ trecerea de la un sistem de operare la altul nu necesită modificări ale codului sursă, ci doar compilarea acestuia pe fiecare platformă în parte (dacă nu s-au folosit functionalităţi/biblioteci specifice) ✗ asigură codul sursă împotriva schimbărilor viitoare ale platformelor gazdă (la nivel sursă sau binar; dezvoltatorii se pot astfel concentra pe dezvoltarea aplicaţiilor, nu pe modificările API-ului) ✗ pot fi atinse mai uşor pieţe multiple (dedicate diferitelor sisteme de operare), cu costuri mai mici de mentenanță a codului Open Source Camp, Iași, 7 - 8 mai 2016
  • 4. Dragoş Acostăchioaie - http://www.unixinside.org ✗ 1994 – este lansată prima versiune Qt, de către Trolltech (Norvegia) ✗ 2000 – Qt pentru platforma X11 este lansat sub licență GPL v2 ✗ Iunie 2005 – Qt versiunea 4 (reprezintă un progres considerabil faţă de versiunile anterioare) ✗ Iunie 2008 – Trolltech este cumpărat de Nokia (progres considerabil în dezvoltarea Qt pe platforme mobile) ✗ 2011 – Digia (Finlanda) cumpără Qt de la Nokia ✗ Decembrie 2012 – este lansat Qt 5, având model de dezvoltare open source ✗ Septembrie 2014 – Qt este transferat catre Qt Company, aparținând Digia Open Source Camp, Iași, 7 - 8 mai 2016 Scurt istoric
  • 5. Dragoş Acostăchioaie - http://www.unixinside.org ✗ Mediul desktop KDE și majoritatea aplicațiilor KDE ✗ Ubuntu Touch ✗ webOS ✗ Skype ✗ VLC media player ✗ Google Earth ✗ Aplicații din domeniul auto (Tesla Model S) ✗ Numeroase companii: AMD, European Space Agency, Lucasfilm, Walt Disney Animation Studios, Volvo, Siemens, Panasonic, US Army Research Laboratory Open Source Camp, Iași, 7 - 8 mai 2016 Aplicații care utilizează Qt
  • 6. Dragoş Acostăchioaie - http://www.unixinside.org Pe ce platforme rulează Qt Platforme de tip Desktop ✗ Linux/X11, dar și alte “UNIX flavours” (FreeBSD, Solaris, HP-UX, AIX) ✗ Linux/Wayland ✗ MacOS ✗ Windows Platforme Mobile ✗ Android ✗ iOS ✗ Windows Platforme Embedded ✗ Embedded Android ✗ Embedded Linux ✗ Windows Embedded, Windows CE, WinRT ✗ Real-time operating systems (ex QNX, VxWorks) Open Source Camp, Iași, 7 - 8 mai 2016
  • 7. Dragoş Acostăchioaie - http://www.unixinside.org În ce limbaje putem programa folosind Qt ✗ Limbaje native: C++ și QML ✗ QML – limbaj declarativ care permite descrierea interfeței utilizator, alcătuită din componente vizuale și definirea modurilor de interacțiune/relaționare dintre acestea ✗ Poate interacționa cu alte limbaje (engl. language bindings): Java (QtJambi), Ruby, C#, C++11 ✗ Limbaje de scripting suportate: QML (nativ), JavaScript, Phyton Open Source Camp, Iași, 7 - 8 mai 2016
  • 8. Dragoş Acostăchioaie - http://www.unixinside.org Ce medii integrate sunt compatibile cu Qt ✗ Qt Creator ✗ Eclipse ✗ Microsoft Visual Studio Open Source Camp, Iași, 7 - 8 mai 2016 http://qt.io
  • 9. Dragoş Acostăchioaie - http://www.unixinside.org Ce poate face Qt Creator ✗ Gestiunea proiectului ✗ Editarea codului sursă ✗ Controlul versiunilor ✗ Proiectarea interfeței ✗ Help integrat ✗ Generarea codului binar ✗ Depanarea aplicaţiei ✗ Publicarea aplicației Open Source Camp, Iași, 7 - 8 mai 2016
  • 10. Dragoş Acostăchioaie - http://www.unixinside.org Ce poate face Qt Creator Vrăjitor (wizard) pentru proiecte Qt ✗ realizează proiecte noi Qt ✗ generează automat proiectul şi fişierele de bază Editor avansat de cod sursă C++/QML/Javascript ✗ syntax highlighting ✗ completare automată a codului ✗ marcarea automată a erorilor de sintaxă în timpul editării ✗ auto-indentare ✗ posibilitatea de expandare/restrângere a funcţiilor ✗ căutare incrementală a cuvintelor-cheie în timpul editării ✗ comutarea uşoară între declaraţia şi definiţia unei metode ✗ posibilitatea de a face semne de carte în cadrul codului sursă ✗ posibilitatea de a lucra fără mouse şi de a deschide ferestre de editare multiple Open Source Camp, Iași, 7 - 8 mai 2016
  • 11. Dragoş Acostăchioaie - http://www.unixinside.org Proiectarea interfeței utilizator cu Qt Creator Qt Designer ✗ Utilizat pentru proiectarea interfeței utilizator a aplicațiilor pe platforme desktop ✗ Se bazează pe editarea de widget-uri și form-uri ✗ Permite utilizarea mecanismului de semnale și sloturi ✗ Interfața utilizator este salvată în fișiere XML Qt Quick Designer ✗ Utilizat pentru proiectarea interfeței utilizator a aplicațiilor pe platforme mobile ✗ Permite două moduri de lucru, editare și design ✗ Suportă machete de interfață multiple (ex telefon / tabletă / desktop), fără a necesita modificarea codului sursă Open Source Camp, Iași, 7 - 8 mai 2016
  • 12. Dragoş Acostăchioaie - http://www.unixinside.org Ce poate face Qt Creator Help pentru biblioteca Qt integrat ✗ poate fi accesat în timpul editării prin poziţionarea pe un cuvânt-cheie Sistem de compilare a proiectului ✗ prin intermediul sistemului qmake (propriu Qt) sau prin Cmake Sistem de gestiune a fişierelor din proiect ✗ permite localizarea uşoară a unui fişier din proiect după tipul şi numele acestuia Sisteme de control al versiunilor ✗ sunt suportate: Git, Subversion (SVN), CVS şi Perforce Open Source Camp, Iași, 7 - 8 mai 2016
  • 13. Dragoş Acostăchioaie - http://www.unixinside.org Ce poate face Qt Creator Compilarea aplicației ✗ Sunt suportate gcc, gdb, Clang precum și Microsoft Visual Studio compiler ✗ Pot fi stabilite individual configurările pentru fiecare platformă în parte și se poate comuta rapid între platforme ✗ Se pot crea versiuni diferite ale proiectului, pentru a păstra separat codul sursă dependent de platformă ✗ Generează automat pachetele care vor transferate pe dispozitivul mobil în vederea executării aplicației direct pe acesta Open Source Camp, Iași, 7 - 8 mai 2016
  • 14. Dragoş Acostăchioaie - http://www.unixinside.org Ce poate face Qt Creator Depanarea aplicației ✗ Pot fi stabilite puncte de întrerupere, rula aplicaţia linie-cu-linie sau instrucţiune-cu- instrucţiune, examina conţinutul variabilelor locale şi globale ✗ Permite depanarea inclusiv a funcțiilor Javascript ✗ Dacă aplicația este testată direct pe dispozitivul mobil sau în emulator, mesajele vor apărea în consola QtCreator ✗ Dacă se stabilesc puncte de oprire (breakpoints), în consola QML/Javascript pot fi executate expresii Javascript ✗ În timpul execuției, poate fi explorată structura obiectelor Open Source Camp, Iași, 7 - 8 mai 2016
  • 15. Dragoş Acostăchioaie - http://www.unixinside.org Ce poate face Qt Creator Publicarea aplicației ✗ Permite crearea pachetelor necesare publicării aplicației pentru dispozitive mobile, utilizând magazinele de aplicații (App Store, Google Play, Windows Store) Qt Installer ✗ Arhitectură care oferă un set de instrumente şi utilitare pentru realizarea de sisteme de instalare ale aplicaţiilor ✗ Funcţionează pe Linux, MacOS şi Windows şi are aspectul nativ al platformei gazdă ✗ Sistemul de instalare este configurabil, putându-se adăuga noi widget-uri şi crea scripturi pentru a realiza operaţiuni noi ✗ Sistemul de instalare poate fi offline (conţin toate componentele necesare) sau online (conţinutul poate fi descărcat de pe un server Web) ✗ Oferă şi posibilitatea de actualizare ulterioară a conţinutului aplicaţiei http://doc.qt.io/qt-5/publishtogoogleplay.html Open Source Camp, Iași, 7 - 8 mai 2016
  • 16. Dragoş Acostăchioaie - http://www.unixinside.org Qt are o structură modulară http://doc.qt.io/qt-5/qtmodules.html Qt Essentials ✗ Qt Core - provides core non-GUI functionality ✗ Qt GUI - provides the basic enablers for graphical applications ✗ Qt Multimedia - provides audio, video, radio and camera functionality ✗ Qt Network - provides classes to make network programming easier and portable ✗ Qt QML - classes for QML and JavaScript languages ✗ Qt Quick - provides classes for embedding Qt Quick2 in Qt/C++ applications ✗ Qt SQL - provides a driver layer, SQL API layer, and a user interface layer for SQL db ✗ Qt Test - classes for unit testing Qt applications and libraries ✗ Qt WebKit - provides a web browser engine (WebKit2) ✗ Qt Widgets - extends Qt GUI with C++ widget functionality Open Source Camp, Iași, 7 - 8 mai 2016
  • 17. Dragoş Acostăchioaie - http://www.unixinside.org Qt are o structură modulară http://doc.qt.io/qt-5/qtmodules.html Qt Add-ons ✗ Qt Bluetooth – enables basic Bluetooth operations ✗ Qt D-Bus - Inter-Process Communication using the D-Bus protocol (UNIX-only) ✗ Qt Graphical Effects - graphical effects for use with Qt Quick 2 ✗ Qt Image Formats - plugins for additional image formats ✗ Qt Location – location services support ✗ Qt NFC – provides connectivity between NFC enabled devices ✗ Qt OpenGL - offers classes that make it easy to use OpenGL ✗ Qt Positioning - provides positioning information ✗ Qt Print Support - provides classes to make printing easier and portable ✗ Qt Sensors - Provides classes for reading sensor data ✗ Qt Serial Port - classes that enable access to a serial port ✗ Qt Script - provides classes for making Qt applications scriptable ✗ Qt SVG - provides functionality for handling SVG images ✗ Qt XML - implementations of SAX and DOM ✗ Qt XML Patterns - support for XPath, XQuery, XSLT and XML schema validation Open Source Camp, Iași, 7 - 8 mai 2016
  • 18. Dragoş Acostăchioaie - http://www.unixinside.org Qt are o structură modulară http://doc.qt.io/qt-5/qtmodules.html Qt Tools ✗ Qt Designer – classes for extending Qt Designer ✗ Qt Help - classes for integrating online documentation into applications ✗ Qt UI Tools - classes to handle the forms created in Qt Designe Open Source Camp, Iași, 7 - 8 mai 2016
  • 19. Dragoş Acostăchioaie - http://www.unixinside.org ✗ Permite execuția de aplicații Qt5 pe dispozitive care rulează Android v2.3.3 sau mai nouă ✗ Sunt suportate toate modulele Qt, exceptând Qt WebKit, Qt NFC, Qt SerialPort și cele specifice unor platforme (Qt MacExtras, Qt WindowsExtras, Qt X11Extras) Ce este Qt pentru Android http://doc.qt.io/qt-5/android-support.html Open Source Camp, Iași, 7 - 8 mai 2016
  • 20. Dragoş Acostăchioaie - http://www.unixinside.org ✗ Android SDK Tools (instrumente pentru dezvoltarea și depanarea de aplicații Android) ✗ Android NDK (permite dezvoltarea de cod pentru Android in C/C++) ✗ Apache Ant v1.8 sau mai nouă (instrumente pentru generarea de aplicații Android) ✗ Java SE Development Kit (JDK) v6 sau mai nouă. Pe Linux putem utiliza și OpenJDK ✗ pe Windows, este necesar și Android Debug Bridge (ADB) driver Ce ne trebuie pentru platforma Android http://doc.qt.io/qt-5/androidgs.html Open Source Camp, Iași, 7 - 8 mai 2016
  • 21. Dragoş Acostăchioaie - http://www.unixinside.org ✗ Executare direct pe dispozitiv. Consola de mesaje se va regăsi în QtCreator. Înainte de conectarea prin USB a dispozitivului, trebuie activat USB Debugging pe acesta ✗ Executare pe calculator. Poate fi aleasă platforma pe care se compilează/execută proiectul. ✗ Executare în emulator Android. În prealabil trebuie creat un AVD (Android Virtual Device) și stabilite proprietățile dispozitivului virtual. Cum executăm aplicația Android doc.qt.io/qtcreator/creator-developing-android.html Open Source Camp, Iași, 7 - 8 mai 2016
  • 22. Dragoş Acostăchioaie - http://www.unixinside.org ✗ Permite execuția de aplicații Qt5 pe dispozitive care rulează iOS ✗ Cerințe minime: iPhone 3GS, iPod touch 3rd gen, iPad2, iPad mini ✗ Este necesar Xcode (Windows sau MacOS) ✗ În codul sursă pot fi utilizate C++ și Objective-C (compilator Clang) Ce este Qt pentru iOS http://doc.qt.io/qt-5/ios-support.html Open Source Camp, Iași, 7 - 8 mai 2016
  • 23. Dragoş Acostăchioaie - http://www.unixinside.org #include <QApplication> #include <QQmlApplicationEngine> #include <QQmlContext> #include "background.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); QQmlApplicationEngine engine; // încărcare componentă vizuală engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); Background backgrd; // expunere C++ la QML engine.rootContext()->setContextProperty("app", &backgrd); return app.exec(); } Exemplu de aplicație pentru dispozitiv mobil Open Source Camp, Iași, 7 - 8 mai 2016
  • 24. Dragoş Acostăchioaie - http://www.unixinside.org #ifndef BACKGROUND #define BACKGROUND #include <QObject> class Background : public QObject { Q_OBJECT public: inline Background(QObject *parent = 0) : QObject(parent) { } // apelabilă din QML Q_INVOKABLE inline bool autentificare(const QString &nume, const QString &parola) { return (nume == "admin" && parola == "admin"); } }; #endif // BACKGROUND Open Source Camp, Iași, 7 - 8 mai 2016 Exemplu de aplicație pentru dispozitiv mobil
  • 25. Dragoş Acostăchioaie - http://www.unixinside.org import QtQuick 2.4 import QtQuick.Controls 1.3 import QtQuick.Window 2.2 import QtQuick.Dialogs 1.2 import QtQuick.Layouts 1.1 ApplicationWindow { title: "Autentificare" width: 640 height: 480 visible: true MessageDialog { id: dialog title: "Mesaj" icon: StandardIcon.Question // proprietate atașată (binding) - se actualizează la schimbarea valorii text: "Rezultat autentificare: " + rez standardButtons: StandardButton.Ok property string rez } Open Source Camp, Iași, 7 - 8 mai 2016 Exemplu de aplicație pentru dispozitiv mobil
  • 26. Dragoş Acostăchioaie - http://www.unixinside.org function afisareRezultat(stare) { dialog.rez = stare dialog.open() } GridLayout { anchors.centerIn: parent columns: 2 rows: 4 Text { text: "Autentificare" Layout.columnSpan: 2 Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter } Open Source Camp, Iași, 7 - 8 mai 2016 Exemplu de aplicație pentru dispozitiv mobil
  • 27. Dragoş Acostăchioaie - http://www.unixinside.org Text { text: "Nume:" } TextField { id: numeEdit } Text { text: "Parola:" } TextField { id: parolaEdit; echoMode: TextInput.Password } Item { Layout.fillWidth: true } Button { text: "OK" Layout.alignment: Qt.AlignRight | Qt.AlignVCenter onClicked: { var result = app.autentificare(numeEdit.text, parolaEdit.text) afisareRezultat(result ? "Succes" : "Esuata") } } } } Open Source Camp, Iași, 7 - 8 mai 2016 Exemplu de aplicație pentru dispozitiv mobil
  • 28. Dragoş Acostăchioaie - http://www.unixinside.org Resurse ✗ Qt documentation – http://doc.qt.io ✗ Mark Summerfield books - http://www.qtrac.eu/marksummerfield.html ✗ Learning Qt videos - https://www.ics.com/learning/icsnetwork Open Source Camp, Iași, 7 - 8 mai 2016