Programarea independenta de platforma in C++. Qt

16
Programarea independentă de platformă în C++ Qt Dragoş Acostăchioaie http://www.unixinside.org [email protected] Şcoala de vară “Informatica la castel”, Macea, 6-11 septembrie 2010

description

Platform independent programming in C++. Qt

Transcript of Programarea independenta de platforma in C++. Qt

Page 1: Programarea independenta de platforma in C++. Qt

Programarea independentăde platformă în C++

Qt

Dragoş Acostăchioaiehttp://[email protected]

Şcoala de vară “Informatica la castel”, Macea, 6-11 septembrie 2010

Page 2: Programarea independenta de platforma in C++. Qt

Dragoş Acostăchioaie - http://www.unixinside.org

Ş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

Page 3: Programarea independenta de platforma in C++. Qt

Şcoala de vară “Informatica la castel”, Macea, 6-11 septembrie 2010

Dragoş Acostăchioaie - http://www.unixinside.org

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), fiindcacodul binar se executa nativ, rezultand si consum semnificativ mai redus de resurse

✗ utilizeaza sistemul grafic al sistemului de operare pe care ruleaza; astfel, aplicatiile auaspectul si comportamentul nativ al sistemului gazda

✗ trecerea de la un sistem de operare la altul nu necesita modificari ale codului sursa, cidoar compilarea acestuia pe fiecare platforma in parte

✗ asigura codul sursa impotriva schimbarilor viitoare ale platformelor gazda; dezvoltatoriise 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

Page 4: Programarea independenta de platforma in C++. Qt

Şcoala de vară “Informatica la castel”, Macea, 6-11 septembrie 2010

Dragoş Acostăchioaie - http://www.unixinside.org

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

Page 5: Programarea independenta de platforma in C++. Qt

Şcoala de vară “Informatica la castel”, Macea, 6-11 septembrie 2010Şcoala de vară “Informatica la castel”, Macea, 6-11 septembrie 2010

Dragoş Acostăchioaie - http://www.unixinside.org

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

Page 6: Programarea independenta de platforma in C++. Qt

Şcoala de vară “Informatica la castel”, Macea, 6-11 septembrie 2010

Dragoş Acostăchioaie - http://www.unixinside.org

Qt. Licente de utilizare

Qt CommercialDeveloper License

GNU LGPL v2.1 GNU GPL v3.0

Cost de licentiere Taxa de licentiere (de la ~3000 $)

Fara costuri Fara costuri

Trebuie furnizate modificarile la codul sursa Qt

Nu Trebuie furnizat codul sursa

Trebuie furnizat codul sursa

Pot fi realizate aplicatii proprietare

Da Da, in concordanta cu termenii LGPL

Nu, aplicatiile sunt sub licenta GPL si trebuie furnizat codul sursa

Sunt furnizate actualizari

Da, sunt trimise imediat notificari celor care au contract de suport

Da Da

Este furnizat suport tehnic

Da, celor cu contract incheiat

Disponibil contra cost

Disponibil contra cost

Taxa pentru executabile

Pentru unele platforme embedded

Nu Nu

Page 7: Programarea independenta de platforma in C++. Qt

Şcoala de vară “Informatica la castel”, Macea, 6-11 septembrie 2010

Dragoş Acostăchioaie - http://www.unixinside.org

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

Page 8: Programarea independenta de platforma in C++. Qt

Şcoala de vară “Informatica la castel”, Macea, 6-11 septembrie 2010

Dragoş Acostăchioaie - http://www.unixinside.org

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

Page 9: Programarea independenta de platforma in C++. Qt

Şcoala de vară “Informatica la castel”, Macea, 6-11 septembrie 2010

Dragoş Acostăchioaie - http://www.unixinside.org

✗ 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

Scurt istoric

Page 10: Programarea independenta de platforma in C++. Qt

Şcoala de vară “Informatica la castel”, Macea, 6-11 septembrie 2010

Dragoş Acostăchioaie - http://www.unixinside.org

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

Page 11: Programarea independenta de platforma in C++. Qt

Şcoala de vară “Informatica la castel”, Macea, 6-11 septembrie 2010

Dragoş Acostăchioaie - http://www.unixinside.org

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

Page 12: Programarea independenta de platforma in C++. Qt

Şcoala de vară “Informatica la castel”, Macea, 6-11 septembrie 2010

Dragoş Acostăchioaie - http://www.unixinside.org

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 definidimensiunea si pozitiawidget-urilor

✗ permite previzualizarea aspectului form-urilor

Page 13: Programarea independenta de platforma in C++. Qt

Şcoala de vară “Informatica la castel”, Macea, 6-11 septembrie 2010

Dragoş Acostăchioaie - http://www.unixinside.org

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 potfi vizualizate in forma arborescenta)

Page 14: Programarea independenta de platforma in C++. Qt

Şcoala de vară “Informatica la castel”, Macea, 6-11 septembrie 2010

Dragoş Acostăchioaie - http://www.unixinside.org

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

Şcoala de vară “Informatica la castel”, Macea, 6-11 septembrie 2010

Dragoş Acostăchioaie - http://www.unixinside.org

Mediul integrat de dezvoltare Qt Creator

Şcoala de vară “Informatica la castel”, Macea, 6-11 septembrie 2010

Dragoş Acostăchioaie - http://www.unixinside.org

Mediul integrat de dezvoltare Qt Creator

Page 15: Programarea independenta de platforma in C++. Qt

Şcoala de vară “Informatica la castel”, Macea, 6-11 septembrie 2010

Dragoş Acostăchioaie - http://www.unixinside.org

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 modificareacodului sursa

✗ permite si utilizarea formatelor XLIFF(XML Localization Interchange FileFormat) si gettext (po)

Page 16: Programarea independenta de platforma in C++. Qt

Şcoala de vară “Informatica la castel”, Macea, 6-11 septembrie 2010

Dragoş Acostăchioaie - http://www.unixinside.org

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...