Sei sulla pagina 1di 12

Activitate cercetare

Introducere in framework-ul QT

Hahn Raul Alexandru Mihai

Contents

1.Despre QT.........................................................................................................................................3
1.1 Ce este qt ?......................................................................................................................................3
1.1.1 Platforme suportate.................................................................................................................3
1.1.2 Qt stabilitate.............................................................................................................................4
1.2 Qt caractesristici si beneficii..........................................................................................................4
1.2.1 Cross-platform.........................................................................................................................4
1.2.2 Comunicarea intre obiecte (Signals & Slots)..........................................................................4
1.2.3 Class library overview.............................................................................................................5
1.3 De ce Qt? De ce programatorii aleg Qt?........................................................................................6
1.4 Open source sau comercial?...........................................................................................................7
1.5 Despre IDE (Integrated development environment)......................................................................7
1.5.1 Qt este detaliat.........................................................................................................................8
1.5.2 Qt Designer..............................................................................................................................8
1.6 Module Qt.......................................................................................................................................9
1.6.1 Add-onuri Qt............................................................................................................................9
1.7 Comunicarea intre aplicatii...........................................................................................................11
1.7.1 TCP/IP...................................................................................................................................11
1.7.2 Memoria partajata..................................................................................................................11
1.7.3 D-Bus.....................................................................................................................................11
1.7.4 Qt Communication Protocol (QCOP)....................................................................................11
1.7.5 Qt Bluetooth..........................................................................................................................11
1.8 Exemplu "hello wolrd" QT...........................................................................................................12
1.9 Bibliografie...................................................................................................................................13

1.Despre QT
1.1 Ce este qt ?
Qt este un UI framework folosit pentru crearea de GUI (Graphical user interface) ale
aplicatilor, aceastea fiind dezvoltate cu suport multiplatforma. Principiul lui fiind de scrie cod odata
si a compila peste tot, nefiind dependet de platforma. Framework-ul perminte programarea in C++,
JavaScript si QML.
Particularitati:
-framework-ul este usor de instalat, poate fi folosit online installer-ul care permite
modificarea parametrilor pentru instalare si obtinerea de update-uri rapide.
- este usor de folosit, Api-uri intuitive, documentatie vasta care cuprinde si exemple .
- usor de integrat aplicatia pe multe platforme .[1]
1.1.1 Platforme suportate
Qt suporta platforme pe 32 si pe 64 de biti si poate fi de obicei rulat pe toate platformele
folosind GCC.

Platforme Desktop - Windows, Linux/X11, OS X


Platforme Embedded - Embedded Android, Embedded Linux, Windows
Embedded (Compact and Standard),sisteme de operare real time ca QNX,
VxWorks si INTEGRITY
Platforme Mobile - Android, iOS, WinRT (incluzand si Windows Phone),
BlackBerry 10, Sailfish OS, Tizen (in progres).

Platform

Compiler

Ubuntu Linux 11.10, X11 (32-bit and 64bit)

As provided by Ubuntu

Ubuntu Linux 12.04, X11 (64-bit)

As provided by Ubuntu

RedHat 6.5, X11 (64-bit)

As provided by Red Hat

openSUSE 13.1, X11 (64-bit)

As provided by SUSE

Microsoft Windows 7 (32-bit)

MSVC 2010 SP1

Microsoft Windows 7 (32-bit)

MinGW-builds gcc 4.9.1 (32-bit)

Microsoft Windows 8.1 (32-bit and 64bit)

MSVC 2012 SP2

Microsoft Windows 8.1 (32-bit and 64bit)

MSVC 2013 SP3

Microsoft Windows Phone 8.1 (64-bit)

MSVC 2013 SP3

Microsoft Windows Runtime 8.1 (64-bit)

MSVC 2013 SP3

Platform

Compiler

Apple OS X 10.8 "Mountain Lion", Cocoa


(64-bit)

Clang as provided by Apple

Apple OS X 10.9 "Mavericks", Cocoa


(64-bit)

Clang as provided by Apple

Apple OS X 10.10 "Yosemite", Cocoa


(64-bit)

Clang as provided by Apple

Apple iOS 8 (64-bit)

Clang as provided by Apple

Google Android 4.4

As provided by Google (Android NDK


Revision 10c)
Tabel 1. Platforma suportata si tipul compilatorului.[1]

1.1.2 Qt stabilitate
Qt este bazat pe Linux KDE (K Desktop Environment), milioane de linii de code, stabile,
care se folosesc intr-o gama foarte variata de aplicatii precum : dispozitive medicale, controlul
traficului aerian, dispozitive embeded etc.

1.2 Qt caractesristici si beneficii


1.2.1 Cross-platform
O caracteristica importanta este aceea ca ca este cross-platform, consistent.

Figura 1 Suport multiplatforma


Qt pune la dispozitie o incapsulare independenta de platforma a sistemului de operare.APIul este identic pe fiecare platforma.[1]
1.2.2 Comunicarea intre obiecte (Signals & Slots)
Este un mecanism unic de comunicare intre obiecte bazat pe callback-uri intre acestea, prin
acest mecanism se faciliteaza incapsularea, obiectul care trimite mesajul precum si cel care il
receptioneaza nu stiu unul de celalat.

Figura 2 Mecanism Signals & Slots[2]


Comunicarea poate fi de 1 la mai multi sau mai multi la 1 . Mecanismul este Fully object
oriented.
1.2.3 Class library overview
Qt cuprinde un set mare de clase bazate pe GUI care contine un GUI toolkit precum si
widgeturi. Clasele specifice sistemului de operare sunt incapsulate, acesta cuprinde si o multitudine
de interfete in C++.
Acces la clasele care se ocupa cu managementul de baze de date SQL.
Precum si clase care sunt folosite destul de des si sunt destinate realizarii unor operatii comune
(Utility). Clasele Sql au urmatoarea structura:

Figura 3 Structura aplicatie cu baza de date


Clasele permit operatii de stocare, inserarea, interogare, traversare si modificare a datelor
din baza de date.
API-ul pentru lucru cu baze de date este independent : Orcale, Sybase/MS SQL Server, MySQL,
PostgreSQL, DB/2, Interbase, ODBC.

Qt mai pune la dispozitie si widgeturi pentru baze de date care permit editarea formularelor si a
vizualizarea tabelelor.

1.3 De ce Qt? De ce programatorii aleg Qt?


Qt este compatibil cu orice, performata mare deoarece codul este scris in C++, rapid,accesul
la supportul tehnic, tutoriale, exemple. Cuprinde o vasta librarie care cuprinde clase C+, creare de
interfete foarte rapid folosind cod putin. Qt este nativ , aplicatiile sunt create in stratul grafic nativ al
acestora.[1]

Figura 4 Straturile aplicatiei in functie de platforma


Aplicatiile Qt ruleaza la viteza de compilare.Api-urile si instrumentele sunt consistente pe
toate platformele suportate (Desktop, mobile).Flexibilatatea alegerii platformei.

1.4 Open source sau comercial?

Figura 5 Ciclul de viata pentru un proiect comercial [1]

Qt este open source, poate fi accesat codul si vazut dar poate fi si comercial.
In cazul comercial acesta necesita licenta daca planuiesti sa comercializezi produse care sunt create
folosint qt.
Fiecare dezvoltator necesita licenta.Pretul unei licenta costa in functie de editie si numarul de
platforme.

1.5 Despre IDE (Integrated development environment)


IDE-ul folosit este Qt Creator si cuprinde o multitudine de instrumente si plugin-uri care
usureaza munca dezvoltatorilor. Aplicatile dezvoltate cu ajutorul acestui IDE trec prin toate etapele
ciclui de viata a unei aplicatii de la crearea unui proiect pana la rularea acestuia pe platforma dorita .
Ciclul de viata al unei aplicatii este prezentat in figura 6.
Cu ajutorul acestuia dezvoltatori pot crea aplicatii pentru desktop, si mobile ( Android iOS).
IDE-ul este disponibil pe urmatoarele platforme Linux, OS X si Windows.

Figura 6 Ciclul de viata a unei aplicatii [3]


1.5.1 Qt este detaliat
Cuprinde 80-90% din functionalitatile de baza folosite de dezvoltatori pt aplicatii cat mai
diferite, contine clase ca : GUI,Utility, Events, File, Print, Network, Plugins, Threads, Date and
time etc. Precum si module ca : Canvas, Iconview, Network, OpengL, SQL, Table, Workspace,
XML. Instrumene : Designer (Visual GUI Builder), Assistant (Help Browser), Linguist(Labguage
translators tool) , dar si extensii ca : ActiveQT, Motif migration MFC migration.

1.5.2 Qt Designer

Figura 7 Qt designer tool


Qt designer suporta drag & drop GUI builder, precum si auto-layout system dar si format xml
pentru elemente. Qt designer nu interfereaza cu codul sursa al user-ului.[2]

1.6 Module Qt
QT Essentials - module care stau la baza Qt, ele sunt disponibile pe toate platformele suportate.
Modulele esentiale sunt folosite in majoritatea aplicatilor QT.
o Qt Core - toate modulele se bazeaza pe acest modul, acesta punand la dispozitie un
mecanism puternic pentru comunicarea intre obiecte ( signals an slots) , ierarhizarea
obiecteleor, dynamic cast care functioneaza in library.
o Qt GUI - pune la dispozitie clase pentru integrarea ferestrelor, tratarea
evenimentelor, integrare OpenGL si OpenGL ES, grafica 2D, fonturi si texte.Aceste
clase sunt folosinte intern de interfetele Qt. Pentru dezvoltarea de interfete QT pune
la dispozite un API mai performant (Qt Quick) care se bazeaza pe Qt Gui.
o QT Multimedia - este un modul care dispune de un se vast de tipuri QML si clase C+
+ care ajuta lucrul cu continut multimedia.De asemenea pune la dispozie un API
pentru a avea acces la camera si la fuctionalitatea radio. Qt Audio Engine pune la
dispozitie tipuri pentru playback audio si management . De asemea contine clase
pentru managementul fisierelor video, audio.
o Qt Network - dispune de un set de API-uri pentru programarea aplicatiilor care
folosesc TCP/IP.Si care au in componenta lor operatii precum, cereri catre server,
trimite date catre server folosind HTTP, servicii REST.
o Qt QML - acest modul dispune de un framework petru dezvoltarea de aplicatii si
librarii folozind limbajul QML. Defineste si implementeaza un limbaj si o
infrastructura pentru acesta, de asemenea pune la dispozitie un API care permite
dezvoltatorilor sa extinda limbajul QML cu tipuri customizate si sa integreze cod
QML cu JavaScript si C++.
o Qt SQL - este un modul care ofera suprt pentru bazele de date SQL. API-urile sunt
impartite in mai multe straturi : Driver layer, SQL API layer, User interface layer.
o Qt Test - este un modul care ofera clase specializate pentru scrierea de teste
unitare(unit tests) pentru aplicatiile dezvolatate sau pentru librari.
o Qt webKit - este un modul care ofera un API pentru WebView, care permite
aplicatiilor QML sa redea dinamic regiuni din continutul web.

o Qt Widgets - dispune de un set de elemente de UI pentru a crea interfete clasice


pentru desktop.
1.6.1 Add-onuri Qt
Acest modul aduce functionalitati suplimentare pentru aplicatii mai complexe. Aceste module sunt
valabile doar pe anumite platforme. Multe dintre aceste module sunt inca in dezvoltare sau poate nu
exista compatibilitate cu versiuni mai vechi sau poate pur si simplu ruleaza doar pe anumite
platforme. Pentru fiecare dintre acestea este specificata compatibilitatea.
o Active Qt - acest add-on este suportat doar de platformele windows, acesta ofera
access la controalele ActiveX si obiectele COM puse la dispozitie de orice server
ActiveX in aplicatia Qt.Acest framework este format din 2 module :
QAxContainer care este o librarie statica care implementeaza QObject si
QWidged,
care sunt folosite pe post de containere pentru
obiectele COM si controale ActiveX.
QAxServer - la fel o librarie statica care implementeaza functionalitatea
pentru
procesele serverelor COM
o Enginio - Este un API care permite comunicarea cu serverul la adresa http://engin.io.
acesta pune la dispozitie suport multiplu pentru backend care poate exista pe un cont
de pe server, asadar backend multimpul pe un singur cont. Cand mai multi useri
incarca o aplicatie Enginio, toti userii folosesc acelasi backend id.Acesta este
disponibil pe toate platformele suportate de Qt.
o Qt Bluetooth - Acest API este utilizat in aplicatii care folosesc conexiunea bluetooth
intre deviceuri.Acest API este suportat de Android, BlackBerry 10 si Linux (BlueZ
4.x/5.x).
o Qt Concurrent - este un API de nivel inalt care face posibila dezvoltarea de programe
folosind multi-thread, fara a folosi mecanisme primite de threading low-level cum ar
fi, mutax, citeste si scrie lock, conditii de asteptare, sau semafoare.
o Qt Graphical Effects - Acest modul adauga componete vizuale aditionale precum si
effecte grafice care pot fi configurate.
o Qt Image Formats - Acest API suporta citirea si scrierea de imagini de urmatoarele
formate : PNG, JPEG, BMP, GIF.
o Qt Mac Extras - clase si functii care ofera posibilitatea de implementare a
functionalitatilor specifice systemului de operare OS X.
o Qt NFC - Acest API este folosit pentru conectivitatea dintre dispozitivele NFC, acest
API este suportat de BlackBerry 10.
o Qt Positioning - Acest API le ofera dezvoltatorilor posibilitatea de a determina
pozitia dispozitivului folosind satelitul sau wifi.Aceasta informatie poate fi folosita
pentru determinarea postiei pe o harta. Acest API este suportat de Android,
BlackBerry, iOS si Linux.
o Qt Print Support - API care usureaza sistemul de printare de pe fiecare platforma.
o Qt Script - Qt ofera suport pentru criptarea aplicatiilor folosint ECMASCript.
o Qt Sensors - acest API ofera suprort pentru accesul la senzorii hardware care se
gasesc in dispozitiv prin intermediul QML si a interfetelor C++.Acest API pune la
dispozitie un mecanism de recunoastere a miscarilor dispozitivului.

o Qt Serial Port - ofera functionalitatea de baza pentru operatii de tip intrare/ iesire
folosind interfata seriala RS-232.
o Qt SVG - Scalable Vector Graphics - este un limbaj bazat pe XML pentru a descrie
dimensiunea imagnilor sub forma de vector.Qt pune la dispozite clase pentru randare
si afisare a fisierelor SVG.
o Qt WebSockets - implementeaza protocolul pentru web socket-uri care este specificat
in standardul RFC 6455.
o Qt XML Patters - ofera suport pentru XPath, XQuery, XSLT, si validare de scheme
XML.
o Qt Virtual Keyboard - este un framework care implementeaza diferite metode da
introducere a datelor, asemanatoare cu tastatura virtuala QML.

1.7 Comunicarea intre aplicatii


Qt dispune de mai multe solutii care implementeaza functionalitatea de comunicare intre 2
sau mai multe aplicatii .
1.7.1 TCP/IP
Cu ajutorul modulului QtNetwork sunt puse la dispozitie clase care usureaza programarea
pe internet.Ofera clase de nivel inalt care ajuta la comunicarea intre aplicatii folosid doar un anumit
protocol.
1.7.2 Memoria partajata
Cu ajutorul QSharedMemory, Qt ofera acces la memoria partajata a sistemului de operare.
Permite acces in siguranta la segmentele de memorie aflate pe mai multe fire de executie sau
procese.
1.7.3 D-Bus
Modulul QtDBus este o librarie din Unix care este folosita pentru implemtarea IPC care
foloseste protocolul D-Bus. Acesta extinde mecanismul de Signals an Slots la nivel de IPC,
permitand transmiterea de semnale de la un proces la altul .
1.7.4 Qt Communication Protocol (QCOP)
Clasa QCopChanel implementeaza un protocol pentru transmiterea de mesaje intre clientii
unor procese prin intermediul unor canale.QCopChannel este disponibila doar in varianta Qt pentru
Embedded Linux. La fel ca QtDBus si acesta extinde mecanismul de signal and slots, permitan sa se
transmita semnale intre procese la nivel IPC doar ca spre deosebire de QtDBus acesta nu depinde si
de o alta librarie ( third party library).
1.7.5 Qt Bluetooth
Cu acest Api se pot face urmatoarele :

Sa se primeasca informatii despre dispozitivul Bluetooth


Cautare de alte dispozitive bluetooth aflata in raza de actiune si primind informatii
despre ele
Trimiterea de fisiere la dispozitivele conectate folosind OBEX Object Push Profile
(OOP)
Conecatarea cu alte dispozitive aflate in raza de actiune prin canalul RFCOMM
folosind portul serial (SPP)
Crearea de servere RFCOMM care permit conexiuni folosind SPP
Obtinerea de specificatii despre Bluetooth low enegy.
Conecatarea la un dispozitiv Bluetooth low energy
Primirea de avertismente de la un dispozitiv Bluetooth low energy

1.8 Exemplu "hello wolrd" QT


#include <qapplication.h>
#include <qlabel.h>
int main(int argc, char* argv[]) {
QApplication myapp(argc, argv);
QLabel* mylabel = new QLabel("Hello World,0);
mylabel->resize(80,30);
myapp.setMainWidget(mylabel);
mylabel->show();
return myapp.exec();
}
Textul va fi afisat intr-o eticheta apartinand unei ferestre, care se creaza implicit.

Figura 8 Output aplicatie demo "Hello world"

1.9 Bibliografie
[1] (2014) http://www.qt.io/
[2] (2014) http://qt-project.org/doc/qtcreator-2.5/creator-overview.html
[3] (2014) http://doc.qt.digia.com/qtcreator-2.4/creator-overview.html

Potrebbero piacerti anche