1. Şcoala de vară “Informatica la castel”, Macea, 6-11 septembrie 2010
Programarea independentă
de platformă în C++
Qt
Dragoş Acostăchioaie
http://www.unixinside.org
dragos@unixinside.org
2. Şcoala de vară “Informatica la castel”, Macea, 6-11 septembrie 2010
Qt. Code less. Create more. Deploy everywhere
✗ Qt faciliteaza dezvoltarea de cod aplicatii C++ care ruleaza pe o larga varietate de platforme
hardware si software, de tip desktop si mobile/embedded
✗ Qt poate interactiona cu alte limbaje, cum ar fi Java, precum si cu limbaje de scripting, cum
ar fi Python sau JavaScript
✗ Qt suporta platformele:
✗ Linux, dar si alte UNIX flavours (eg FreeBSD)
✗ MacOS
✗ Windows
✗ Embedded Linux
✗ Symbian OS (Qt este SDK standard pentru Symbian OS incepand cu 2010)
✗ Windows CE
✗ Maemo
✗ Qt suporta mediile integrate:
✗ Eclipse
✗ Microsoft Visual Studio
Dragoş Acostăchioaie - http://www.unixinside.org
3. Şcoala de vară “Informatica la castel”, Macea, 6-11 septembrie 2010
Qt. Code less. Create more. Deploy everywhere
✗ Avantajele Qt:
✗ un singur cod sursa functioneaza fara modificari pe platforme diferite, conform
conceptului bine-cunoscut write once, run everywhere
✗ performante superioare fata de limbajele care ruleaza intr-o masina virtuala (Java), fiindca
codul binar se executa nativ, rezultand si consum semnificativ mai redus de resurse
✗ utilizeaza sistemul grafic al sistemului de operare pe care ruleaza; astfel, aplicatiile au
aspectul si comportamentul nativ al sistemului gazda
✗ trecerea de la un sistem de operare la altul nu necesita modificari ale codului sursa, ci
doar compilarea acestuia pe fiecare platforma in parte
✗ asigura codul sursa impotriva schimbarilor viitoare ale platformelor gazda; dezvoltatorii
se pot astfel concentra pe dezvoltarea aplicatiilor, nu pe modificarile API-urilor
✗ pot fi atinse mai usor piete multiple (dedicate diferitelor sisteme de operare)
✗ costuri mai mici de mentenanta a codului
Dragoş Acostăchioaie - http://www.unixinside.org
4. Şcoala de vară “Informatica la castel”, Macea, 6-11 septembrie 2010
Biblioteca Qt
✗ Biblioteca de clase Qt cuprinde (non-exhaustiv):
✗ interfata utilizator
✗ grafica 2D
✗ grafica 3D cu OpenGL
✗ fire de executie multiple
✗ sistem de ferestre pentru sisteme mobile/embedded
✗ comunicatie intre obiecte
✗ suport pentru stream-uri multimedia
✗ integrare a sistemului WebKit
✗ comunicatii de retea
✗ procesare XML
✗ acces la baze de date
✗ clase template
✗ motor de scripturi ECMA
Dragoş Acostăchioaie - http://www.unixinside.org
5. Şcoala de vară “Informatica la castel”, Macea, 6-11 septembrie 2010
Qt. Instrumente pentru dezvoltare
✗ Qt Creator – mediu integrat de dezvoltare
✗ editor de cod C++ si JavaScript
✗ instrumente pentru gestiunea proiectelor
✗ sistem de ajutor contextual integrat
✗ depanator
✗ designer de interfete utilizator
✗ controlul versiunilor
✗ instrumente pentru gestiunea codului sursa
✗ suport pentru platformele desktop si cele mobile
✗ Qt Designer – designer de interfete utilizator
✗ Qt Linguist – faciliteaza traducerea aplicatiilor in mai multe limbi
✗ Qt Assistant – ajuta la realizarea de documentatie pentru aplicatiile Qt
✗ Virtual Framebuffer – permite dezvoltarea si depanarea aplicatiilor embedded pe desktop
✗ instrumente ce asigura integrarea cu IDE-urile Microsoft Visual Studio si Eclipse
Dragoş Acostăchioaie - http://www.unixinside.org
6. Şcoala de vară “Informatica la castel”, Macea, 6-11 septembrie 2010
Qt. Licente de utilizare
Qt Commercial GNU LGPL v2.1 GNU GPL v3.0
Developer License
Cost de licentiere Taxa de licentiere Fara costuri Fara costuri
(de la ~3000 $)
Trebuie furnizate Nu Trebuie furnizat Trebuie furnizat
modificarile la codul codul sursa codul sursa
sursa Qt
Pot fi realizate aplicatii Da Da, in concordanta Nu, aplicatiile sunt
proprietare cu termenii LGPL sub licenta GPL si
trebuie furnizat codul
sursa
Sunt furnizate Da, sunt trimise Da Da
actualizari imediat notificari
celor care au
contract de suport
Este furnizat suport Da, celor cu contract Disponibil contra Disponibil contra
tehnic incheiat cost cost
Taxa pentru Pentru unele Nu Nu
executabile platforme embedded
Dragoş Acostăchioaie - http://www.unixinside.org
7. Şcoala de vară “Informatica la castel”, Macea, 6-11 septembrie 2010
Aplicatii care utilizeaza Qt
✗ mediul desktop KDE si majoritatea aplicatiilor KDE (Koffice, Amarok etc.)
✗ Skype
✗ Google Earth
✗ VLC
✗ Walt Disney Animation Studios
✗ Marble (harti)
✗ Avogadro (editor molecular)
✗ Deutsche Flugsicherung GmbH
✗ xTuple ERP
✗ numeroase companii: Nokia, Asus, Philips, Volvo, Samsung, Sony, Panasonic, Motorola,
Accton, Sharp
Dragoş Acostăchioaie - http://www.unixinside.org
8. Şcoala de vară “Informatica la castel”, Macea, 6-11 septembrie 2010
Dispozitive care utilizeaza Qt
✗ telefoane mobile, palmtop, media playere, dispozitive dedicate, …
✗ Motorola: MOTOROKR Z6, E6 si E2, MOTOMING A1200, A680, E680, A780, A760, A768
✗ Sony Mylo (PDA)
✗ Panasonic KX-WP1050 (telefoane WiFi pentru Skype)
✗ Accton (telefoane WiFi pentru Skype)
✗ ZTE U980 (telefoane mobile)
✗ Archos PMA400, 404, 604, 604WiFi (playere multimedia)
✗ Fluke Networks EtherScope series II (tester de retea)
✗ Sharp SL-5500, SL-A300, SL-C700, SL-C750, SL-5600, SL-C760, SL-6000, SL-C860
(PDA)
✗ Volvo Human-Machine Interface for buses
✗ SDG systems TDS Recon (PDA)
✗ Samsung Techwin SRD-16700 (player multimedia)
✗ Quanta Computer videophone YE7
✗ digitalCube i-Station T43 (media player portabil)
✗ Nokia N8
Dragoş Acostăchioaie - http://www.unixinside.org
9. Şcoala de vară “Informatica la castel”, Macea, 6-11 septembrie 2010
Scurt istoric
✗ 1994 – este lansata prima versiune Qt
✗ 28 iunie 2005 – Qt versiunea 4 (reprezinta un progres considerabil fata de versiunile
anterioare)
✗ iunie 2008 – Trolltech este cumparat de Nokia (progres considerabil in dezvoltarea
Qt pe platforme mobile)
✗ in acest moment – zeci de mii de aplicatii (comerciale sau open source) sunt bazate pe Qt
✗ peste 15 milioane de dispozitive mobile care folosesc Qt aflate pe piata
Dragoş Acostăchioaie - http://www.unixinside.org
10. Şcoala de vară “Informatica la castel”, Macea, 6-11 septembrie 2010
Mediul integrat de dezvoltare Qt Creator
✗ wizard pentru creare/import proiecte Qt
✗ editor avansat de cod C++
✗ Qt Designer pentru proiectarea elementelor
ce compun interfata utilizator, integrat
✗ Help Qt integrat
✗ sistem de compilare a proiectelor (qmake
si CMake)
✗ sistem de gestiune a fisierelor din proiect
✗ sisteme de control al versiunilor
✗ depanarea aplicatiilor
Dragoş Acostăchioaie - http://www.unixinside.org
11. Şcoala de vară “Informatica la castel”, Macea, 6-11 septembrie 2010
Mediul integrat de dezvoltare Qt Creator
✗ Wizard pentru proiecte Qt
✗ realizarea de proiecte noi Qt
✗ genereaza automat proiectul si fisierele de baza
✗ Editor avansat de cod sursa C++
✗ syntax highlighting
✗ completare automata a claselor membre, metodele si argumentele functiilor, pentru
clasele Qt si cele definite de programator
✗ marcarea automata a erorilor de sintaxa in timpul editarii
✗ auto-indentare
✗ posibilitatea de expandare/restrangere a functiilor
✗ cautare incrementala a cuvintelor-cheie in timpul editarii
✗ comutarea usoara intre declaratia si definitia unei metode
✗ posibilitatea de a face semne de carte in cadrul codului sursa
✗ posibilitatea de a lucra fara mouse si de a deschide ferestre de editare multiple
Dragoş Acostăchioaie - http://www.unixinside.org
12. Şcoala de vară “Informatica la castel”, Macea, 6-11 septembrie 2010
Mediul integrat de dezvoltare Qt Creator
✗ Qt Designer integrat pentru proiectarea elementelor interfetei utilizator
✗ se bazeaza pe editarea de form-uri, sunt generate fisiere de tip XML
✗ tehnologie de tip drag-and-drop pentru widget-uri
✗ nu este necesara recompilarea intregului proiect
✗ permite conectarea
semnalelor si sloturilor
✗ permite definirea actiunilor
pentru widget-uri
✗ pot fi utilizate layout-urile
pentru a nu defini
dimensiunea si pozitia
widget-urilor
✗ permite previzualizarea
aspectului form-urilor
Dragoş Acostăchioaie - http://www.unixinside.org
13. Şcoala de vară “Informatica la castel”, Macea, 6-11 septembrie 2010
Mediul integrat de dezvoltare Qt Creator
✗ Help pentru biblioteca Qt integrat
✗ poate fi accesat in timpul editarii prin pozitionarea pe un cuvant-cheie
✗ sistem de compilare a proiectului
✗ prin intermediul sistemului qmake propriu Qt sau prin Cmake
✗ sistem de gestiune a fisierelor din proiect
✗ permite localizarea usoara a unui fisier din proiect dupa tipul si numele acestuia
✗ sisteme de control al versiunilor
✗ sunt suportate: Git, Subversion (SVN), CVS si Perforce
✗ compilarea si depanarea aplicatiei
✗ sunt suportate gcc si gdb, precum si Microsoft Visual Studio compiler/debugger
✗ pot fi stabilite puncte de intrerupere, rula aplicatia linie-cu-linie sau instructiune-cu-
instructiune, examina continutul variabilelor locale si globale (variabilele compuse pot
fi vizualizate in forma arborescenta)
Dragoş Acostăchioaie - http://www.unixinside.org
14. Şcoala de vară “Informatica la castel”, Macea, 6-11 septembrie 2010
Mediul integrat de dezvoltare Qt Creator
✗ Compilarea unei aplicatii pentru dispozitive mobile
✗ permite compilarea si executia unei aplicatii pentru un anumit tip de dispozitiv mobil
✗ Qt Simulator
✗ Permite executia si testarea aplicatiei in conditii similare rularii pe dispozitivul mobil
Dragoş Acostăchioaie - http://www.unixinside.org
15. Şcoala de vară “Informatica la castel”, Macea, 6-11 septembrie 2010
Instrumente pentru localizare
✗ Qt Linguist – set de instrumente pentru localizarea aplicatiilor Qt
✗ aplicatie dedicata traducerii textelor din elementele de interfata, usor de utilizat
si de persoanele fara cunostinte tehnice
✗ suporta Unicode 5.0
✗ pot fi manipulate mai multe limbaje intr-un singur document
✗ cuvintele sau frazele sunt introduse in codul sursa intr-o limba prestabilita utilizand
sintaxa tr(“fraza de tradus”)
✗ traducerile sunt stocate in fisiere
dedicate, nefiind necesara modificarea
codului sursa
✗ permite si utilizarea formatelor XLIFF
(XML Localization Interchange File
Format) si gettext (po)
Dragoş Acostăchioaie - http://www.unixinside.org
16. Şcoala de vară “Informatica la castel”, Macea, 6-11 septembrie 2010
Qt. In loc de concluzie
✗ Qt – solutie completa. Alternativa viabila la:
✗ Java
✗ C# si biblioteci proprietare
✗ C++ si biblioteci proprietare
… Intrebari?
Sa il ascultam pe Bogdan...
Dragoş Acostăchioaie - http://www.unixinside.org