+ All Categories
Home > Documents > qt overview.doc

qt overview.doc

Date post: 21-Dec-2015
Category:
Upload: hahn-raul
View: 90 times
Download: 0 times
Share this document with a friend
16
Activitate cercetare Introducere in framework-ul QT Profesor Indrumator: Student:
Transcript
Page 1: qt overview.doc

Activitate cercetare

Introducere in framework-ul QT

Profesor Indrumator: Student:

Șl.dr.ing. Cosmin Strilețchi Hahn Raul Alexandru Mihai

Page 2: qt overview.doc

Contents1.Despre QT.........................................................................................................................................31.1 Ce este qt ?......................................................................................................................................3

1.1.1 Platforme suportate.................................................................................................................31.1.2 Qt stabilitate.............................................................................................................................4

1.2 Qt caractesristici si beneficii..........................................................................................................41.2.1 Cross-platform.........................................................................................................................41.2.2 Comunicarea intre obiecte (Signals & Slots)..........................................................................41.2.3 Class library overview.............................................................................................................5

1.3 De ce Qt? De ce programatorii aleg Qt?........................................................................................61.4 Open source sau comercial?...........................................................................................................71.5 Despre IDE (Integrated development environment)......................................................................7

1.5.1 Qt este detaliat.........................................................................................................................81.5.2 Qt Designer..............................................................................................................................8

1.6 Module Qt.......................................................................................................................................91.6.1 Add-onuri Qt...........................................................................................................................9

1.7 Comunicarea intre aplicatii...........................................................................................................111.7.1 TCP/IP...................................................................................................................................111.7.2 Memoria partajata..................................................................................................................111.7.3 D-Bus.....................................................................................................................................111.7.4 Qt Communication Protocol (QCOP)...................................................................................111.7.5 Qt Bluetooth..........................................................................................................................11

1.8 Exemplu "hello wolrd" QT...........................................................................................................121.9 Bibliografie...................................................................................................................................13

Page 3: qt overview.doc

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 64-bit)

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 64-bit)

MSVC 2012 SP2

Page 4: qt overview.doc

Platform Compiler

Microsoft Windows 8.1 (32-bit and 64-bit)

MSVC 2013 SP3

Microsoft Windows Phone 8.1 (64-bit) MSVC 2013 SP3

Microsoft Windows Runtime 8.1 (64-bit) MSVC 2013 SP3

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.API-ul este identic pe fiecare platforma.[1]

1.2.2 Comunicarea intre obiecte (Signals & Slots)

Page 5: qt overview.doc

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

Page 6: qt overview.doc

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.

Page 7: qt overview.doc

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.

Page 8: qt overview.doc

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

Page 9: qt overview.doc

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 :

Page 10: qt overview.doc

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.

Page 11: qt overview.doc

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

Page 12: qt overview.doc

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"

Page 13: qt overview.doc

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


Recommended