SlideShare a Scribd company logo
1 of 16
Download to read offline
Ş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
Ş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
Ş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
Ş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
Ş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
Ş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
Ş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
Ş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
Ş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
Ş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
Ş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
Ş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
Ş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
Ş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
Ş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
Ş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

More Related Content

Viewers also liked

C++/CLI: TIpuri de date
C++/CLI: TIpuri de dateC++/CLI: TIpuri de date
C++/CLI: TIpuri de datemcroitor
 
Carte probleme rezolvate cef (1)
Carte probleme rezolvate cef (1)Carte probleme rezolvate cef (1)
Carte probleme rezolvate cef (1)Claudiu Luiuz
 
Cursu PS - ASM Cluj
Cursu PS - ASM ClujCursu PS - ASM Cluj
Cursu PS - ASM ClujASMCluj
 
68 De Pagini De Probleme Rezolvate Si Teorie In Pascal
68 De Pagini De Probleme Rezolvate Si Teorie In Pascal68 De Pagini De Probleme Rezolvate Si Teorie In Pascal
68 De Pagini De Probleme Rezolvate Si Teorie In Pascalguest274e8
 
Microsoft power point 2007 tic 10
Microsoft power point 2007 tic 10Microsoft power point 2007 tic 10
Microsoft power point 2007 tic 10technoconcord
 
Suport 03-cls9-tic-cap05-crearea paginilor web-liste in pagini web
Suport 03-cls9-tic-cap05-crearea paginilor web-liste in pagini webSuport 03-cls9-tic-cap05-crearea paginilor web-liste in pagini web
Suport 03-cls9-tic-cap05-crearea paginilor web-liste in pagini webGeorge Brebenel
 
Olga Gaidet, Copilul intra in Internet...
Olga Gaidet, Copilul intra in Internet...Olga Gaidet, Copilul intra in Internet...
Olga Gaidet, Copilul intra in Internet...Alianta INFONET
 
Microsoft access 2007
Microsoft access 2007Microsoft access 2007
Microsoft access 2007aditu_7
 
Aplicaţia power point
Aplicaţia power pointAplicaţia power point
Aplicaţia power pointmihaelamatroz
 
Orasul roman
Orasul romanOrasul roman
Orasul romananatmd
 

Viewers also liked (20)

Limbajul c
Limbajul cLimbajul c
Limbajul c
 
Pp step-by-step
Pp step-by-stepPp step-by-step
Pp step-by-step
 
Metrologia
MetrologiaMetrologia
Metrologia
 
C++/CLI: TIpuri de date
C++/CLI: TIpuri de dateC++/CLI: TIpuri de date
C++/CLI: TIpuri de date
 
Carte C 2003
Carte C 2003Carte C 2003
Carte C 2003
 
Carte probleme rezolvate cef (1)
Carte probleme rezolvate cef (1)Carte probleme rezolvate cef (1)
Carte probleme rezolvate cef (1)
 
Powerpoint
PowerpointPowerpoint
Powerpoint
 
Cursu PS - ASM Cluj
Cursu PS - ASM ClujCursu PS - ASM Cluj
Cursu PS - ASM Cluj
 
Soc Cap01
Soc Cap01Soc Cap01
Soc Cap01
 
68 De Pagini De Probleme Rezolvate Si Teorie In Pascal
68 De Pagini De Probleme Rezolvate Si Teorie In Pascal68 De Pagini De Probleme Rezolvate Si Teorie In Pascal
68 De Pagini De Probleme Rezolvate Si Teorie In Pascal
 
Microsoft power point 2007 tic 10
Microsoft power point 2007 tic 10Microsoft power point 2007 tic 10
Microsoft power point 2007 tic 10
 
Cap05
Cap05Cap05
Cap05
 
Despre powerpoint
Despre powerpointDespre powerpoint
Despre powerpoint
 
Suport 03-cls9-tic-cap05-crearea paginilor web-liste in pagini web
Suport 03-cls9-tic-cap05-crearea paginilor web-liste in pagini webSuport 03-cls9-tic-cap05-crearea paginilor web-liste in pagini web
Suport 03-cls9-tic-cap05-crearea paginilor web-liste in pagini web
 
C++
C++C++
C++
 
Olga Gaidet, Copilul intra in Internet...
Olga Gaidet, Copilul intra in Internet...Olga Gaidet, Copilul intra in Internet...
Olga Gaidet, Copilul intra in Internet...
 
Microsoft access 2007
Microsoft access 2007Microsoft access 2007
Microsoft access 2007
 
Aplicaţia power point
Aplicaţia power pointAplicaţia power point
Aplicaţia power point
 
Orasul roman
Orasul romanOrasul roman
Orasul roman
 
Facebook
FacebookFacebook
Facebook
 

Similar to Programarea independenta de platforma in C++. Qt

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
 
Vincentiu Cuc - Platforma IT IMI
Vincentiu Cuc - Platforma IT IMIVincentiu Cuc - Platforma IT IMI
Vincentiu Cuc - Platforma IT IMIIMI PQ NET Romania
 
Lupu Vitaliy Bachelor thesis Presentation
Lupu Vitaliy Bachelor thesis PresentationLupu Vitaliy Bachelor thesis Presentation
Lupu Vitaliy Bachelor thesis Presentationlogan123
 
Windows Azure AppFabric - Service Bus, Caching
Windows Azure AppFabric - Service Bus, CachingWindows Azure AppFabric - Service Bus, Caching
Windows Azure AppFabric - Service Bus, CachingMihai Dan Nadas
 
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
 
[Web Days] Introducere In Silverlight 2
[Web Days] Introducere In Silverlight 2[Web Days] Introducere In Silverlight 2
[Web Days] Introducere In Silverlight 2Diana Tataran
 
Biblioteci JavaScript pentru Ajax.pptx
Biblioteci JavaScript pentru Ajax.pptxBiblioteci JavaScript pentru Ajax.pptx
Biblioteci JavaScript pentru Ajax.pptxCostea112
 
[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2
[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2
[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2Diana Tataran
 
Web-ul nostru (cel de toate zilele)
Web-ul nostru (cel de toate zilele)Web-ul nostru (cel de toate zilele)
Web-ul nostru (cel de toate zilele)Traian Anghel
 
Prezentare proiect GiSHEO - Marian Neagu
Prezentare proiect GiSHEO - Marian NeaguPrezentare proiect GiSHEO - Marian Neagu
Prezentare proiect GiSHEO - Marian Neaguvasile33
 
Silverlight and Dynamic Languge Runtime @ Forum It
Silverlight and Dynamic Languge Runtime @ Forum ItSilverlight and Dynamic Languge Runtime @ Forum It
Silverlight and Dynamic Languge Runtime @ Forum ItAndrei Iacob
 

Similar to Programarea independenta de platforma in C++. Qt (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
 
Qt detaliu
Qt detaliuQt detaliu
Qt detaliu
 
Cu codul în "nori"
Cu codul în "nori"Cu codul în "nori"
Cu codul în "nori"
 
Microsoft zitec
Microsoft  zitecMicrosoft  zitec
Microsoft zitec
 
Limbajul java
Limbajul javaLimbajul java
Limbajul java
 
Vincentiu Cuc - Platforma IT IMI
Vincentiu Cuc - Platforma IT IMIVincentiu Cuc - Platforma IT IMI
Vincentiu Cuc - Platforma IT IMI
 
Irina Cureraru
Irina CureraruIrina Cureraru
Irina Cureraru
 
Raytracing Distribuit
Raytracing DistribuitRaytracing Distribuit
Raytracing Distribuit
 
Lupu Vitaliy Bachelor thesis Presentation
Lupu Vitaliy Bachelor thesis PresentationLupu Vitaliy Bachelor thesis Presentation
Lupu Vitaliy Bachelor thesis Presentation
 
Windows Azure AppFabric - Service Bus, Caching
Windows Azure AppFabric - Service Bus, CachingWindows Azure AppFabric - Service Bus, Caching
Windows Azure AppFabric - Service Bus, Caching
 
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
 
Cap.1
Cap.1Cap.1
Cap.1
 
[Web Days] Introducere In Silverlight 2
[Web Days] Introducere In Silverlight 2[Web Days] Introducere In Silverlight 2
[Web Days] Introducere In Silverlight 2
 
Biblioteci JavaScript pentru Ajax.pptx
Biblioteci JavaScript pentru Ajax.pptxBiblioteci JavaScript pentru Ajax.pptx
Biblioteci JavaScript pentru Ajax.pptx
 
[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2
[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2
[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2
 
Axiologic quark
Axiologic quarkAxiologic quark
Axiologic quark
 
Web-ul nostru (cel de toate zilele)
Web-ul nostru (cel de toate zilele)Web-ul nostru (cel de toate zilele)
Web-ul nostru (cel de toate zilele)
 
Prezentare proiect GiSHEO - Marian Neagu
Prezentare proiect GiSHEO - Marian NeaguPrezentare proiect GiSHEO - Marian Neagu
Prezentare proiect GiSHEO - Marian Neagu
 
CLOUD COMPUTING
CLOUD COMPUTINGCLOUD COMPUTING
CLOUD COMPUTING
 
Silverlight and Dynamic Languge Runtime @ Forum It
Silverlight and Dynamic Languge Runtime @ Forum ItSilverlight and Dynamic Languge Runtime @ Forum It
Silverlight and Dynamic Languge Runtime @ Forum It
 

More from Dragos Tudor Acostachioaie

More from Dragos Tudor Acostachioaie (11)

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
 
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
 
Introduction to Qt programming
Introduction to Qt programmingIntroduction to Qt programming
Introduction to Qt programming
 
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
 
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
 

Programarea independenta de platforma in C++. Qt

  • 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