SlideShare una empresa de Scribd logo
1 de 34
Descargar para leer sin conexión
Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012




       Mediul de programare
        multiplatformă Qt



Dragoş Acostăchioaie
   http://www.unixinside.org
   dragos@unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012


                   Qt. Code less. Create more. Deploy everywhere
  ✗   Qt facilitează dezvoltarea de aplicații C++ si interfete utilizator independente de platformă

  ✗   sunt suportate o largă varietate de platforme hardware și software, de tip desktop, mobile
      şi embedded

  ✗   Qt suportă platformele:
       ✗ Linux/X11, dar şi alte UNIX flavours (ex FreeBSD, Solaris, HP-UX, AIX)
       ✗ MacOS
       ✗ Windows
       ✗ Embedded Linux
       ✗ Symbian OS (Qt este SDK standard pentru Symbian OS incepand cu 2010)
       ✗ Windows CE
       ✗ Maemo, MeeGo

  ✗   Qt suportă mediile integrate:
       ✗ Qt Creator
       ✗ Eclipse
       ✗ Microsoft Visual Studio

       ✗  Qt poate interactiona cu alte limbaje, cum ar fi Java (Qt Jambi), precum si cu limbaje de
      scripting, cum ar fi QML, JavaScript sau Phyton
Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012


                   Qt. Code less. Create more. Deploy everywhere
    ✗   un singur cod sursă funcţionează fără modificări pe platforme diferite
        (write once, run everywhere – vezi şi paradigma de portare a soluţiilor FOSS)

    ✗   performanţe superioare faţă de limbajele care rulează într-o maşină virtuală (Java),
        fiindcă codul binar se execută nativ, rezultând un consum semnificativ mai redus de
        resurse

    ✗   utilizează sistemul grafic al sistemului de operare pe care rulează; astfel, aplicaţiile au
        aspectul şi comportamentul nativ al sistemului gazdă

    ✗   trecerea de la un sistem de operare la altul nu necesită modificări ale codului sursă, ci
        doar compilarea acestuia pe fiecare platformă în parte (dacă nu s-au folosit
        functionalităţi/biblioteci specifice)

    ✗   asigură codul sursă împotriva schimbărilor viitoare ale platformelor gazdă (la nivel
        sursă sau binar; dezvoltatorii se pot astfel concentra pe dezvoltarea aplicaţiilor, nu pe
        modificările API-ului

    ✗   pot fi atinse mai uşor pieţe multiple (dedicate diferitelor sisteme de operare)

    ✗   costuri mai mici de mentenanţă a codului
Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012


                                                                                          Biblioteca Qt
      Biblioteca de clase Qt cuprinde (non-exhaustiv):
        ✗   interfaţă utilizator - QtGui
        ✗   grafică 2D
        ✗   grafică 3D cu OpenGL
        ✗   fire de execuţie multiple
        ✗   sistem de ferestre pentru sisteme mobile/embedded
        ✗   comunicaţie intre obiecte
        ✗   suport pentru stream-uri multimedia
        ✗   integrare a sistemului WebKit
        ✗   comunicaţii de reţea
        ✗   procesare XML
        ✗   acces la baze de date relaţionale
        ✗   clase template
        ✗   motor de scripturi ECMA

Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012


                                                   Qt. Instrumente pentru dezvoltare

    ✗   Qt Creator – mediu integrat de dezvoltare
         ✗ editor de cod C++ şi JavaScript
         ✗ instrumente pentru gestiunea proiectelor
         ✗ sistem de ajutor contextual integrat
         ✗ depanator (bazat pe GDB)
         ✗ proiectarea interfeţei utilizator
         ✗ controlul versiunilor
         ✗ instrumente pentru gestiunea codului sursă
           suport pentru platformele desktop şi cele mobile/embedded

    ✗   Qt Designer – proiectarea interfeţei utilizator

    ✗   Qt Linguist – facilitează traducerea aplicaţiilor în mai multe limbi

    ✗   Qt Assistant – ajută la realizarea documentaţiei pentru aplicaţiile Qt

    ✗   Virtual Framebuffer – permite dezvoltarea şi depanarea aplicaţiilor embedded pe desktop

    ✗   instrumente ce asigură integrarea cu IDE-urile Microsoft Visual Studio şi Eclipse


Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012


                                                                                                  Qt Quick
    ✗   Sistem integrat pentru proiectarea interfetei grafice:
         ✗ Qt Creator – mediu integrat de dezvoltare (permite editarea QML, proiectarea
           elementelor interfetei, simularea interfeţei pentru dispozitive mobile – QML Viewer)
         ✗ QML – limbajul de marcare utilizat de Qt Quick, pentru a descrie interfata utilizator
           (asemanator CSS si Javascript), independent de platforma
         ✗ Qt Quick UI Runtime – acces direct la API-urile native
         ✗ plugin-uri pentru Adobe Photoshop si GIMP pentru a exporta elemente de interfata
           in QML
                                                          import QtQuick 1.0

                                                         Rectangle {
                                                           id: page
                                                           width: 500; height: 200
                                                           color: "lightgray"

                                                             Text {
                                                               id: helloText
                                                               text: "Hello world!"
                                                               y: 30
                                                               anchors.horizontalCenter: page.horizontalCenter
                                                               font.pointSize: 24; font.bold: true
                                                             }
                                                         }



Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012


                                                                       Qt. Licenţe de utilizare

                                    Qt Commercial           GNU LGPL v2.1             GNU GPL v3.0
                                    Developer License
         Cost de licenţiere         Taxă de licenţiere      Fără costuri              Fără costuri
                                    (de la ~3000 $)
         Trebuie furnizate          Nu                      Trebuie furnizat          Trebuie furnizat
         modificările codului                               codul sursă               codul sursă
         sursă Qt
         Pot fi realizate aplicaţii Da                      Da, în concordanţă        Nu, aplicaţiile sunt
         proprietare                                        cu termenii LGPL          sub licenţă GPL şi
                                                                                      trebuie furnizat codul
                                                                                      sursă
         Sunt furnizate             Da, sunt trimise        Da                        Da
         actualizări                imediat notificări
                                    celor care au
                                    contract de suport
         Este furnizat suport       Da, celor cu contract   Disponibil contra         Disponibil contra
         tehnic                     încheiat                cost                      cost
         Taxă pentru                Pentru unele            Nu                        Nu
         executabile                platforme embedded


Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012


                                                              Aplicaţii care utilizează Qt


    ✗ peste 450.000 de dezvoltatori care utilizează Qt
    ✗ mediul desktop KDE şi majoritatea aplicaţiilor KDE (KOffice, Amarok etc.)

    ✗ Skype

    ✗ Google Earth

    ✗ VLC

    ✗ Walt Disney Animation Studios

    ✗ Next Limit Technologies (grafica 3D şi efecte vizuale, aplicaţii CAD)

    ✗ Marble (hărţi)

    ✗ 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ă “Informatică la castel”, Macea, 27 aug.-1 sep. 2012


                                                        Dispozitive care utilizează 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, alte aplicaţii de tip Automotive Infotainment

  ✗ SDG systems TDS Recon (PDA)

  ✗ Samsung Techwin SRD-16700 (player multimedia)

  ✗ Quanta Computer videophone YE7

  ✗ digitalCube i-Station T43 (media player portabil)

  ✗ Nokia N8, N9, alte telefoane mobile bazate pe Symbian OS

  ✗ Asus Eee PC, Eee Note EA800; Asus DR-950 e-Reader

  ✗ Barco (proiectoare de film digitale)




Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012


                                                                                           Scurt istoric


    ✗   1994 – este lansată prima versiune Qt, de către Trolltech (Norvegia)
    ✗28 iunie 2005 – Qt versiunea 4 (reprezintă un progres considerabil faţă de versiunile
    anterioare)
    ✗iunie 2008 – Trolltech este cumpărat de Nokia (progres considerabil în dezvoltarea Qt pe
    platforme mobile)
    ✗   2011 – Digia (Finlanda) cumpără afacerea cu licenţe comerciale Qt dela Nokia
    ✗2012 – este în curs de finalizare achiziţia de către Digia a întregii tehnologii şi afaceri Qt
    dela Nokia
    ✗în acest moment – zeci de mii de aplicaţii (comerciale sau open-source) sunt bazate pe
    Qt
    ✗   peste 15 milioane de dispozitive mobile care folosesc Qt aflate pe piaţă




Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012


                                                                       Biblioteca Qt. Module


    Biblioteca Qt are la bază o structură modulară:
      ✗   QtCore                                                           ✗   QtOpenGL
      ✗   QtGui                                                            ✗   QtOpenVG
      ✗   QtMultimedia                                                     ✗   QtXmlPatterns
      ✗   QtNetwork                                                        ✗   Phonon
      ✗   QtOpenGL
      ✗   QtScript
      ✗   QtSql
      ✗   QtXml
      ✗   QtWebKit


Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012


                                                                                  Modulul QtCore



            ✗   operații citire-scriere
            ✗   manipularea obiectelor şi a evenimentelor
            ✗   fire de execuție multiple
            ✗   suport pentru plugin-uri
            ✗   comunicarea între obiecte, cu ajutorul semnalelor şi al slot-urilor
            ✗include numeroase clase template proprii: clase container, clase iterator
            (stil STL sau Java), etc.




Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012


                                                                       Qt. Semnale şi sloturi


            ✗ alternativă eficientă la sistemul clasic de comunicare între obiecte (event
            listeners)
            ✗sloturile sunt funcţii membre ale claselor (derivate din QObject), care
            sunt apelate ca răspuns la un anumit semnal
            ✗   există un set de semnale şi sloturi predefinite
            ✗un semnal poate fi conectat la mai multe sloturi, un slot la mai multe
            semnale sau un semnal la alt semnal
            ✗   atunci cand se petrece un eveniment se emite un semnal




Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012


                                                                       Qt. Semnale şi sloturi




Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012


                                                                                      Modulul QtGui

           ✗   conţine un set complet de widget-uri configurabile – de la butoane şi
               dialoguri până la tabele şi meniuri de tip arbore
           ✗   widget-urile se redimensionează automat în funcţie de orientarea şi
               dimensiunea ecranului sau a ferestrei
           ✗   sistem de layout-uri şi grid-uri pentru a uşura poziţionarea widget-
               urilor
           ✗   suport pentru fonturi (utilizează fonturile de pe maşina gazdă) şi anti-
               aliasing
           ✗   crearea de stiluri oferite de mecanismul QtStyleSheet (inspirat din
               CSS); interfața este ușor configurabilă, cu doar câteva linii de cod
               CSS
           ✗   suport pentru SVG (grafică vectorială scalabilă), grafică accelerată
               hardware şi ieşiri video multiple


Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012


                                                                                      Modulul QtGui
      ✗   gestiunea şi interacţiunea cu elemente grafice 2D şi un widget pentru
          vizualizarea acestor elemente, cu suport pentru rotaţie şi mărire,
          transformare în perspectivă, animaţie, drag-and-drop şi suport pentru
          tipărire
      ✗   oferă posibilitatea de a utiliza motoare grafice multiple (nativ, raster,
          XRender, OpenGL, Postscript etc.)
      ✗   oferă suport pentru Unicode şi pentru limbaje bidirecţionale
      ✗   permite localizarea
          aplicaţiei în mai multe limbi
          fără recompilarea codului
          sursă

      ✗   suportă OpenVG – API
          pentru grafică vectorială
          accelerată hardware,
          regăsită pe numeroase
          dispozitive embedded

Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012


                                               Modulele QtMultimedia şi Phonon

              ●   QtMultimedia oferă suport la nivel scăzut pentru audio şi video
              ●   arhitectură independentă de platformă (chiar și pe platforme
                  mobile/embedded) – Phonon, care asigură utilizarea de conținut
                  audio și video în aplicații
              ●   este posibilă redarea locală sau prin streaming
              ●   abstractizează formatele native multimedia: QuickTime pe Mac,
                  DirectShow pe Windows și GStreamer pe Linux
              ●   se pot citi meta-informațiile din fișiere (titlul, albumul, artistul etc.)




Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012


                                                   Modulele QtNetwork şi QtDBus


           ✗   simplifică programarea în rețea
           ✗   clase de nivel înalt, cum ar fi QHttp sau QFtp, care implementează
               protocoalele de la nivelul aplicație
           ✗   clase de nivel scăzut, cum ar fi QTcpSocket,QTcpServer și
               QUdpSocket
           ✗   suportă HTTP, FTP, DNS și HTTP 1.1 asincron
           ✗   suport pentru accesarea mai multor tipuri de date, de la HTML și
               XML, până la imagini și fișiere media
           ✗   suport pentru comunicaţia intre procese (IPC) şi apeluri de proceduri
               de la distanţă (RPC), prin protocolul D-BUS (doar pentru Linux)




Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012


                                                                            Modulul QtOpenGL


        ✗   OpenGL este o bibliotecă utilă pentru crearea de aplicații portabile cu
            grafică accelerată hardware, cu performanță ridicată
        ✗   include OpenGL ES – un motor de desenare – pentru platformele
            Embedded Linux și Windows CE
        ✗   suportă Direct3D pe Windows
        ✗   OpenGL oferă puțin suport pentru interfețe cu utilizatorul, dar Qt face
            posibilă îmbinarea conținutului OpenGL cu acestea
        ✗   uşurează programarea utilizând OpenGL
        ✗   oferă un widget special, care se comportă ca şi celelalte widget-uri
            dar foloseşte OpenGL




Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012


                                                                                Modulul QtScript

           ✗   Qt include un motor de
               scripturi ECMA, bazat pe
               JavaScriptCore
           ✗   face posibilă integrarea
               obiectelor Qt (derivate din
               QObject) şi utilizarea
               sistemului de semnale şi sloturi
               în scripturi, deci integrarea
               între C++ şi scripturi
           ✗   include un depanator pentru
               scripturi Qt, deci poate raporta
               erorile din scripturi şi poate
               ajuta la localizarea acestora




Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012


                                                                                      Modulul QtSql


             ✗   oferă conectivitate cu cele mai importante sisteme de baze de date
                 relaţionale
             ✗   suportă ODBC, MySQL, PostgreSQL, SQLite, ibase, Oracle,
                 Sysbase, DB2 (drivere modulare)
             ✗   oferă o interfaţă independentă de sistemul de baze de date utilizat,
                 asigurând o bună portabilitate
             ✗   se poate folosi împreună cu modelul de programare Model-View-
                 Controller




Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012


                                               Arhitectura Model-View-Controller



        ✗   arhitectura Model-View-Controller este
            folosită pentru afişarea şi manipularea datelor
            provenite din orice sursă (inclusiv SQL)
        ✗   gestionează relaţia dintre informaţii şi modul
            de afişare a acestora
        ✗   datele pot fi reprezentate vizual în tabele,
            liste, liste arborescente, form-uri sau după
            dorinţa programatorului




Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012


                                                   Modulele QtXml şi QtXmlPatterns


             ✗   sistem pentru scrierea şi citirea documentelor XML şi implementări
                 ale protocoalelor SAX și DOM
             ✗   include XQuery, un limbaj asemănător SQL, cu ajutorul căruia se
                 poate parcurge un document XML, din care se pot alege unele
                 elemente pentru export în alt XML sau în alt format
             ✗   suportă XPath 2.0, limbajul de transformare XSLT şi validarea
                 schemelor XML




Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012


                                                                               Modulul QtWebKit

           ✗   conține un motor de
               browser HTML – WebKit
               - care simplifică
               includerea de conținut
               web în aplicații
           ✗   suportă HTML, XHTML,
               SVG, CSS şi JavaScript
           ✗   suportă includerea de
               fişiere Flash şi elemente
               audio sau video
           ✗   permite conectarea
               JavaScript cu obiecte Qt




Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012


                                                                                             Qt Installer


             ✗   arhitectură care oferă un set de instrumente şi utilitare pentru
                 realizarea de sisteme de instalare ale aplicaţiilor
             ✗   funcţionează pe Linux, MacOS şi Windows şi au aspectul nativ al
                 platformei utilizate
             ✗   sistemul de instalare este configurabil, putându-se adăuga noi
                 widget-uri şi crea scripturi pentru a realiza operaţiuni noi
             ✗   sistemul de instalare poate fi offline (conţin toate componentele
                 necesare) sau online (conţinutul poate fi descărcat de pe un server
                 Web)
             ✗   oferă şi posibilitate de actualizare ulterioară a conţinutului aplicaţiei




Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012


                                   Mediul integrat de dezvoltare Qt Creator

   ✗   wizard pentru creare/import proiecte Qt
   ✗   editor avansat de cod C++/QML/JavaScript
   ✗Qt Designer pentru proiectarea elementelor
   ce compun interfaţa utilizator, integrat
   ✗   Help Qt integrat
   ✗sistem de compilare a proiectelor (qmake
   şi CMake)
   ✗   sistem de gestiune a fişierelor din proiect
   ✗   sisteme de control al versiunilor
   ✗   depanarea aplicaţiilor




Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012


                                   Mediul integrat de dezvoltare Qt Creator

    ✗   Wizard pentru proiecte Qt
        ✗ realizarea de proiecte noi Qt
         ✗   generează automat proiectul şi fişierele de bază

    ✗   Editor avansat de cod sursă C++/Javascript
         ✗ syntax highlighting
         ✗   completare automată a claselor membre, metodele şi argumentele funcţiilor, pentru
             clasele Qt şi cele definite de programator
         ✗   marcarea automată a erorilor de sintaxă în timpul editării
         ✗   auto-indentare
         ✗   posibilitatea de expandare/restrângere a funcţiilor
         ✗   căutare incrementală a cuvintelor-cheie în timpul editării
         ✗   comutarea uşoară între declaraţia şi definiţia unei metode
         ✗   posibilitatea de a face semne de carte în cadrul codului sursă
         ✗   posibilitatea de a lucra fără mouse şi de a deschide ferestre de editare multiple


Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012


                                   Mediul integrat de dezvoltare Qt Creator

    ✗   Qt Designer integrat pentru proiectarea elementelor interfeţei utilizator
         ✗ se bazează pe editarea de form-uri, sunt generate fişiere de tip XML
        ✗   tehnologie de tip drag-and-drop pentru widget-uri
        ✗   nu este necesară recompilarea intregului proiect
        ✗   permite conectarea
            semnalelor şi sloturilor
        ✗   permite definirea acţiunilor
            pentru widget-uri
        ✗   pot fi utilizate layout-urile
            pentru a nu defini
            dimensiunea şi poziţia
            widget-urilor
        ✗   permite previzualizarea
            aspectului form-urilor


Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012


                                   Mediul integrat de dezvoltare Qt Creator


    ✗   Help pentru biblioteca Qt integrat
         ✗ poate fi accesat în timpul editării prin poziţionarea pe un cuvânt-cheie

    ✗   sistem de compilare a proiectului
         ✗ prin intermediul sistemului qmake propriu Qt sau prin Cmake

    ✗   sistem de gestiune a fişierelor din proiect
         ✗ permite localizarea uşoară a unui fişier din proiect după tipul şi numele acestuia

    ✗   sisteme de control al versiunilor
         ✗ sunt suportate: Git, Subversion (SVN), CVS şi Perforce




Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012


                                   Mediul integrat de dezvoltare Qt Creator


    ✗   compilarea şi depanarea aplicatiei
          ✗ sunt suportate gcc şi gdb, precum si Microsoft Visual Studio compiler/debugger
           ✗  pot fi stabilite puncte de întrerupere, rula aplicaţia linie-cu-linie sau instrucţiune-cu-
           instrucţiune, examina conţinutul variabilelor locale şi globale (variabilele compuse pot
           fi vizualizate în formă arborescentă)

    ✗   compilarea unei aplicaţii pentru dispozitive mobile
         ✗ permite compilarea şi execuţia unei aplicaţii pentru un anumit tip de dispozitiv mobil
           (modulul QTestLib)

    ✗   Qt Simulator
         ✗ Permite executia şi testarea aplicaţiei în condiţii similare rulării pe dispozitivul mobil




Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012


                                                       Instrumente pentru localizare
    ✗   Qt Linguist – set de instrumente pentru localizarea aplicaţiilor Qt
         ✗ aplicaţie dedicată traducerii textelor din elementele de interfaţă, uşor de utilizat
             şi de persoanele fără cunostinţe tehnice
         ✗   suportă Unicode 5.0
         ✗   pot fi manipulate mai multe limbaje într-un singur document
         ✗   cuvintele sau frazele sunt introduse în codul sursă într-o limbă prestabilită utilizând
             sintaxa tr(“frază de tradus”)
         ✗   traducerile sunt stocate în fişiere
             dedicate, nefiind necesară modificarea
             codului sursă
         ✗   permite şi utilizarea formatelor XLIFF
             (XML Localization Interchange File
             Format) şi gettext (po)



Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012


                                                                    Arhitectura Qt Mobility
    ✗ colecţie de API-uri destinate dispozitivelor mobile/embedded
    ✗ cuprinde:

       ✗ Connectivity – facilitează comunicaţia între dispozitive locale
        ✗   Contacts – transferul de informaţii din agendă între dispozitive locale sau la distanţă
        ✗   Document Gallery – navigarea prin documente şi obţinerea de meta-informaţii
        ✗   Feedback – oferă utilizatorilor răspunsuri tactile şi audio
        ✗   Location API – servicii de localizare, hărţi şi navigare
        ✗   Messaging – accesul la servicii de mesagerie
        ✗   Multimedia – navigarea, rularea şi înregistrarea de conţinut media
        ✗   Organizer – calendar, planificator şi alte date personale
        ✗   Publish and Subscribe – publicarea de conţinut
        ✗   Qt Service Framework – permite utilizarea de servicii diverse
        ✗   Qt Mobility QML Elements – elemente QML pentru dispozitive mobile
        ✗   Qt Mobility QML Plugins – plugin-uri QML pentru proiectul Qt Mobility
        ✗   Sensors – acces la senzorii dispozitivelor
        ✗   System Information – acces la informaţii privind sistemul

Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012


                                                                                              Qt în viitor


      ✗   este în curs de dezvoltare Qt versiunea 5 (a fost lansată versiunea alpha)
      ✗   noutăţi principale:
           ✗ simplificarea (unificarea) arhitecturii generale a sistemului Qt
           ✗   îmbunătăţirea portabilităţii Qt
           ✗   compatibilitate la nivel binar şi sursă cu Qt 4
           ✗   se va pune accent cu prioritate pe dispozitive mobile/embedded
           ✗   se va pune accent pe dezvoltarea capabilităţilor grafice 2D şi 3D ale Qt (Qt Quick
               2, Qt 3D, Qt Graphical Effects)
           ✗   dezvoltarea QML, accentul va fi pus pe JavaScript (Qt JS V8, Qt JSON DB, Qt
               WebKit 2) şi QML
           ✗   conectivitate şi cu alte limbaje decât QML, C++ şi JavaScript




Dragoş Acostăchioaie - http://www.unixinside.org
Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012


                                                                      Qt. În loc de concluzie




                       Qt – soluţie completă
                    desktop, mobile, embedded




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

Más contenido relacionado

Similar a Mediul de programare multiplatforma Qt

Lupu Vitaliy Bachelor thesis Presentation
Lupu Vitaliy Bachelor thesis PresentationLupu Vitaliy Bachelor thesis Presentation
Lupu Vitaliy Bachelor thesis Presentationlogan123
 
Limbajul java
Limbajul javaLimbajul java
Limbajul javaCromina
 
Proiect Programare Web
Proiect Programare WebProiect Programare Web
Proiect Programare WebAdela Bran
 
Civilizatia Egipteana
Civilizatia EgipteanaCivilizatia Egipteana
Civilizatia Egipteanaandreiiovan
 
Software_interior_ro.pdf
Software_interior_ro.pdfSoftware_interior_ro.pdf
Software_interior_ro.pdfSamanatiSorin
 
Biblioteci JavaScript pentru Ajax.pptx
Biblioteci JavaScript pentru Ajax.pptxBiblioteci JavaScript pentru Ajax.pptx
Biblioteci JavaScript pentru Ajax.pptxCostea112
 
Software geospațial open source. O alternativă completă la soluțiile propriet...
Software geospațial open source. O alternativă completă la soluțiile propriet...Software geospațial open source. O alternativă completă la soluțiile propriet...
Software geospațial open source. O alternativă completă la soluțiile propriet...vasile33
 
Prezentare proiect GiSHEO - Marian Neagu
Prezentare proiect GiSHEO - Marian NeaguPrezentare proiect GiSHEO - Marian Neagu
Prezentare proiect GiSHEO - Marian Neaguvasile33
 
Google Web Toolkit - tutorial
Google Web Toolkit - tutorialGoogle Web Toolkit - tutorial
Google Web Toolkit - tutorialanisoarasava
 
Vincentiu Cuc - Platforma IT IMI
Vincentiu Cuc - Platforma IT IMIVincentiu Cuc - Platforma IT IMI
Vincentiu Cuc - Platforma IT IMIIMI PQ NET Romania
 
Gabriel Voicu - De ce Ruby on Rails este o alegere buna in 2024 (2024.02.06, ...
Gabriel Voicu - De ce Ruby on Rails este o alegere buna in 2024 (2024.02.06, ...Gabriel Voicu - De ce Ruby on Rails este o alegere buna in 2024 (2024.02.06, ...
Gabriel Voicu - De ce Ruby on Rails este o alegere buna in 2024 (2024.02.06, ...constantadevelopers
 
Alternative Open Source pentru mediul de afaceri-19mar2010
Alternative Open Source pentru mediul de afaceri-19mar2010Alternative Open Source pentru mediul de afaceri-19mar2010
Alternative Open Source pentru mediul de afaceri-19mar2010Agora Group
 
Programare Web - De la CGI la servere de aplicatii
Programare Web - De la CGI la servere de aplicatiiProgramare Web - De la CGI la servere de aplicatii
Programare Web - De la CGI la servere de aplicatiiSabin Buraga
 

Similar a Mediul de programare multiplatforma Qt (20)

Microsoft zitec
Microsoft  zitecMicrosoft  zitec
Microsoft zitec
 
Lupu Vitaliy Bachelor thesis Presentation
Lupu Vitaliy Bachelor thesis PresentationLupu Vitaliy Bachelor thesis Presentation
Lupu Vitaliy Bachelor thesis Presentation
 
Axiologic quark
Axiologic quarkAxiologic quark
Axiologic quark
 
Limbajul java
Limbajul javaLimbajul java
Limbajul java
 
Proiect Programare Web
Proiect Programare WebProiect Programare Web
Proiect Programare Web
 
Civilizatia Egipteana
Civilizatia EgipteanaCivilizatia Egipteana
Civilizatia Egipteana
 
Software_interior_ro.pdf
Software_interior_ro.pdfSoftware_interior_ro.pdf
Software_interior_ro.pdf
 
HTML5? HTML5!
HTML5? HTML5!HTML5? HTML5!
HTML5? HTML5!
 
Biblioteci JavaScript pentru Ajax.pptx
Biblioteci JavaScript pentru Ajax.pptxBiblioteci JavaScript pentru Ajax.pptx
Biblioteci JavaScript pentru Ajax.pptx
 
Software geospațial open source. O alternativă completă la soluțiile propriet...
Software geospațial open source. O alternativă completă la soluțiile propriet...Software geospațial open source. O alternativă completă la soluțiile propriet...
Software geospațial open source. O alternativă completă la soluțiile propriet...
 
Felicitari personalizate
Felicitari personalizateFelicitari personalizate
Felicitari personalizate
 
Prezentare proiect GiSHEO - Marian Neagu
Prezentare proiect GiSHEO - Marian NeaguPrezentare proiect GiSHEO - Marian Neagu
Prezentare proiect GiSHEO - Marian Neagu
 
Google Web Toolkit - tutorial
Google Web Toolkit - tutorialGoogle Web Toolkit - tutorial
Google Web Toolkit - tutorial
 
Vincentiu Cuc - Platforma IT IMI
Vincentiu Cuc - Platforma IT IMIVincentiu Cuc - Platforma IT IMI
Vincentiu Cuc - Platforma IT IMI
 
Curs java
Curs javaCurs java
Curs java
 
Gabriel Voicu - De ce Ruby on Rails este o alegere buna in 2024 (2024.02.06, ...
Gabriel Voicu - De ce Ruby on Rails este o alegere buna in 2024 (2024.02.06, ...Gabriel Voicu - De ce Ruby on Rails este o alegere buna in 2024 (2024.02.06, ...
Gabriel Voicu - De ce Ruby on Rails este o alegere buna in 2024 (2024.02.06, ...
 
005. html5 si canvas
005. html5 si canvas005. html5 si canvas
005. html5 si canvas
 
Alternative Open Source pentru mediul de afaceri-19mar2010
Alternative Open Source pentru mediul de afaceri-19mar2010Alternative Open Source pentru mediul de afaceri-19mar2010
Alternative Open Source pentru mediul de afaceri-19mar2010
 
CLOUD COMPUTING
CLOUD COMPUTINGCLOUD COMPUTING
CLOUD COMPUTING
 
Programare Web - De la CGI la servere de aplicatii
Programare Web - De la CGI la servere de aplicatiiProgramare Web - De la CGI la servere de aplicatii
Programare Web - De la CGI la servere de aplicatii
 

Más de 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
 

Mediul de programare multiplatforma Qt

  • 1. Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012 Mediul de programare multiplatformă Qt Dragoş Acostăchioaie http://www.unixinside.org dragos@unixinside.org
  • 2. Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012 Qt. Code less. Create more. Deploy everywhere ✗ Qt facilitează dezvoltarea de aplicații C++ si interfete utilizator independente de platformă ✗ sunt suportate o largă varietate de platforme hardware și software, de tip desktop, mobile şi embedded ✗ Qt suportă platformele: ✗ Linux/X11, dar şi alte UNIX flavours (ex FreeBSD, Solaris, HP-UX, AIX) ✗ MacOS ✗ Windows ✗ Embedded Linux ✗ Symbian OS (Qt este SDK standard pentru Symbian OS incepand cu 2010) ✗ Windows CE ✗ Maemo, MeeGo ✗ Qt suportă mediile integrate: ✗ Qt Creator ✗ Eclipse ✗ Microsoft Visual Studio ✗ Qt poate interactiona cu alte limbaje, cum ar fi Java (Qt Jambi), precum si cu limbaje de scripting, cum ar fi QML, JavaScript sau Phyton Dragoş Acostăchioaie - http://www.unixinside.org
  • 3. Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012 Qt. Code less. Create more. Deploy everywhere ✗ un singur cod sursă funcţionează fără modificări pe platforme diferite (write once, run everywhere – vezi şi paradigma de portare a soluţiilor FOSS) ✗ performanţe superioare faţă de limbajele care rulează într-o maşină virtuală (Java), fiindcă codul binar se execută nativ, rezultând un consum semnificativ mai redus de resurse ✗ utilizează sistemul grafic al sistemului de operare pe care rulează; astfel, aplicaţiile au aspectul şi comportamentul nativ al sistemului gazdă ✗ trecerea de la un sistem de operare la altul nu necesită modificări ale codului sursă, ci doar compilarea acestuia pe fiecare platformă în parte (dacă nu s-au folosit functionalităţi/biblioteci specifice) ✗ asigură codul sursă împotriva schimbărilor viitoare ale platformelor gazdă (la nivel sursă sau binar; dezvoltatorii se pot astfel concentra pe dezvoltarea aplicaţiilor, nu pe modificările API-ului ✗ pot fi atinse mai uşor pieţe multiple (dedicate diferitelor sisteme de operare) ✗ costuri mai mici de mentenanţă a codului Dragoş Acostăchioaie - http://www.unixinside.org
  • 4. Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012 Biblioteca Qt Biblioteca de clase Qt cuprinde (non-exhaustiv): ✗ interfaţă utilizator - QtGui ✗ grafică 2D ✗ grafică 3D cu OpenGL ✗ fire de execuţie multiple ✗ sistem de ferestre pentru sisteme mobile/embedded ✗ comunicaţie intre obiecte ✗ suport pentru stream-uri multimedia ✗ integrare a sistemului WebKit ✗ comunicaţii de reţea ✗ procesare XML ✗ acces la baze de date relaţionale ✗ clase template ✗ motor de scripturi ECMA Dragoş Acostăchioaie - http://www.unixinside.org
  • 5. Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012 Qt. Instrumente pentru dezvoltare ✗ Qt Creator – mediu integrat de dezvoltare ✗ editor de cod C++ şi JavaScript ✗ instrumente pentru gestiunea proiectelor ✗ sistem de ajutor contextual integrat ✗ depanator (bazat pe GDB) ✗ proiectarea interfeţei utilizator ✗ controlul versiunilor ✗ instrumente pentru gestiunea codului sursă suport pentru platformele desktop şi cele mobile/embedded ✗ Qt Designer – proiectarea interfeţei utilizator ✗ Qt Linguist – facilitează traducerea aplicaţiilor în mai multe limbi ✗ Qt Assistant – ajută la realizarea documentaţiei pentru aplicaţiile Qt ✗ Virtual Framebuffer – permite dezvoltarea şi depanarea aplicaţiilor embedded pe desktop ✗ instrumente ce asigură integrarea cu IDE-urile Microsoft Visual Studio şi Eclipse Dragoş Acostăchioaie - http://www.unixinside.org
  • 6. Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012 Qt Quick ✗ Sistem integrat pentru proiectarea interfetei grafice: ✗ Qt Creator – mediu integrat de dezvoltare (permite editarea QML, proiectarea elementelor interfetei, simularea interfeţei pentru dispozitive mobile – QML Viewer) ✗ QML – limbajul de marcare utilizat de Qt Quick, pentru a descrie interfata utilizator (asemanator CSS si Javascript), independent de platforma ✗ Qt Quick UI Runtime – acces direct la API-urile native ✗ plugin-uri pentru Adobe Photoshop si GIMP pentru a exporta elemente de interfata in QML import QtQuick 1.0 Rectangle { id: page width: 500; height: 200 color: "lightgray" Text { id: helloText text: "Hello world!" y: 30 anchors.horizontalCenter: page.horizontalCenter font.pointSize: 24; font.bold: true } } Dragoş Acostăchioaie - http://www.unixinside.org
  • 7. Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012 Qt. Licenţe de utilizare Qt Commercial GNU LGPL v2.1 GNU GPL v3.0 Developer License Cost de licenţiere Taxă de licenţiere Fără costuri Fără costuri (de la ~3000 $) Trebuie furnizate Nu Trebuie furnizat Trebuie furnizat modificările codului codul sursă codul sursă sursă Qt Pot fi realizate aplicaţii Da Da, în concordanţă Nu, aplicaţiile sunt proprietare cu termenii LGPL sub licenţă GPL şi trebuie furnizat codul sursă Sunt furnizate Da, sunt trimise Da Da actualizări imediat notificări celor care au contract de suport Este furnizat suport Da, celor cu contract Disponibil contra Disponibil contra tehnic încheiat cost cost Taxă pentru Pentru unele Nu Nu executabile platforme embedded Dragoş Acostăchioaie - http://www.unixinside.org
  • 8. Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012 Aplicaţii care utilizează Qt ✗ peste 450.000 de dezvoltatori care utilizează Qt ✗ mediul desktop KDE şi majoritatea aplicaţiilor KDE (KOffice, Amarok etc.) ✗ Skype ✗ Google Earth ✗ VLC ✗ Walt Disney Animation Studios ✗ Next Limit Technologies (grafica 3D şi efecte vizuale, aplicaţii CAD) ✗ Marble (hărţi) ✗ 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
  • 9. Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012 Dispozitive care utilizează 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, alte aplicaţii de tip Automotive Infotainment ✗ SDG systems TDS Recon (PDA) ✗ Samsung Techwin SRD-16700 (player multimedia) ✗ Quanta Computer videophone YE7 ✗ digitalCube i-Station T43 (media player portabil) ✗ Nokia N8, N9, alte telefoane mobile bazate pe Symbian OS ✗ Asus Eee PC, Eee Note EA800; Asus DR-950 e-Reader ✗ Barco (proiectoare de film digitale) Dragoş Acostăchioaie - http://www.unixinside.org
  • 10. Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012 Scurt istoric ✗ 1994 – este lansată prima versiune Qt, de către Trolltech (Norvegia) ✗28 iunie 2005 – Qt versiunea 4 (reprezintă un progres considerabil faţă de versiunile anterioare) ✗iunie 2008 – Trolltech este cumpărat de Nokia (progres considerabil în dezvoltarea Qt pe platforme mobile) ✗ 2011 – Digia (Finlanda) cumpără afacerea cu licenţe comerciale Qt dela Nokia ✗2012 – este în curs de finalizare achiziţia de către Digia a întregii tehnologii şi afaceri Qt dela Nokia ✗în acest moment – zeci de mii de aplicaţii (comerciale sau open-source) sunt bazate pe Qt ✗ peste 15 milioane de dispozitive mobile care folosesc Qt aflate pe piaţă Dragoş Acostăchioaie - http://www.unixinside.org
  • 11. Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012 Biblioteca Qt. Module Biblioteca Qt are la bază o structură modulară: ✗ QtCore ✗ QtOpenGL ✗ QtGui ✗ QtOpenVG ✗ QtMultimedia ✗ QtXmlPatterns ✗ QtNetwork ✗ Phonon ✗ QtOpenGL ✗ QtScript ✗ QtSql ✗ QtXml ✗ QtWebKit Dragoş Acostăchioaie - http://www.unixinside.org
  • 12. Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012 Modulul QtCore ✗ operații citire-scriere ✗ manipularea obiectelor şi a evenimentelor ✗ fire de execuție multiple ✗ suport pentru plugin-uri ✗ comunicarea între obiecte, cu ajutorul semnalelor şi al slot-urilor ✗include numeroase clase template proprii: clase container, clase iterator (stil STL sau Java), etc. Dragoş Acostăchioaie - http://www.unixinside.org
  • 13. Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012 Qt. Semnale şi sloturi ✗ alternativă eficientă la sistemul clasic de comunicare între obiecte (event listeners) ✗sloturile sunt funcţii membre ale claselor (derivate din QObject), care sunt apelate ca răspuns la un anumit semnal ✗ există un set de semnale şi sloturi predefinite ✗un semnal poate fi conectat la mai multe sloturi, un slot la mai multe semnale sau un semnal la alt semnal ✗ atunci cand se petrece un eveniment se emite un semnal Dragoş Acostăchioaie - http://www.unixinside.org
  • 14. Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012 Qt. Semnale şi sloturi Dragoş Acostăchioaie - http://www.unixinside.org
  • 15. Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012 Modulul QtGui ✗ conţine un set complet de widget-uri configurabile – de la butoane şi dialoguri până la tabele şi meniuri de tip arbore ✗ widget-urile se redimensionează automat în funcţie de orientarea şi dimensiunea ecranului sau a ferestrei ✗ sistem de layout-uri şi grid-uri pentru a uşura poziţionarea widget- urilor ✗ suport pentru fonturi (utilizează fonturile de pe maşina gazdă) şi anti- aliasing ✗ crearea de stiluri oferite de mecanismul QtStyleSheet (inspirat din CSS); interfața este ușor configurabilă, cu doar câteva linii de cod CSS ✗ suport pentru SVG (grafică vectorială scalabilă), grafică accelerată hardware şi ieşiri video multiple Dragoş Acostăchioaie - http://www.unixinside.org
  • 16. Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012 Modulul QtGui ✗ gestiunea şi interacţiunea cu elemente grafice 2D şi un widget pentru vizualizarea acestor elemente, cu suport pentru rotaţie şi mărire, transformare în perspectivă, animaţie, drag-and-drop şi suport pentru tipărire ✗ oferă posibilitatea de a utiliza motoare grafice multiple (nativ, raster, XRender, OpenGL, Postscript etc.) ✗ oferă suport pentru Unicode şi pentru limbaje bidirecţionale ✗ permite localizarea aplicaţiei în mai multe limbi fără recompilarea codului sursă ✗ suportă OpenVG – API pentru grafică vectorială accelerată hardware, regăsită pe numeroase dispozitive embedded Dragoş Acostăchioaie - http://www.unixinside.org
  • 17. Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012 Modulele QtMultimedia şi Phonon ● QtMultimedia oferă suport la nivel scăzut pentru audio şi video ● arhitectură independentă de platformă (chiar și pe platforme mobile/embedded) – Phonon, care asigură utilizarea de conținut audio și video în aplicații ● este posibilă redarea locală sau prin streaming ● abstractizează formatele native multimedia: QuickTime pe Mac, DirectShow pe Windows și GStreamer pe Linux ● se pot citi meta-informațiile din fișiere (titlul, albumul, artistul etc.) Dragoş Acostăchioaie - http://www.unixinside.org
  • 18. Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012 Modulele QtNetwork şi QtDBus ✗ simplifică programarea în rețea ✗ clase de nivel înalt, cum ar fi QHttp sau QFtp, care implementează protocoalele de la nivelul aplicație ✗ clase de nivel scăzut, cum ar fi QTcpSocket,QTcpServer și QUdpSocket ✗ suportă HTTP, FTP, DNS și HTTP 1.1 asincron ✗ suport pentru accesarea mai multor tipuri de date, de la HTML și XML, până la imagini și fișiere media ✗ suport pentru comunicaţia intre procese (IPC) şi apeluri de proceduri de la distanţă (RPC), prin protocolul D-BUS (doar pentru Linux) Dragoş Acostăchioaie - http://www.unixinside.org
  • 19. Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012 Modulul QtOpenGL ✗ OpenGL este o bibliotecă utilă pentru crearea de aplicații portabile cu grafică accelerată hardware, cu performanță ridicată ✗ include OpenGL ES – un motor de desenare – pentru platformele Embedded Linux și Windows CE ✗ suportă Direct3D pe Windows ✗ OpenGL oferă puțin suport pentru interfețe cu utilizatorul, dar Qt face posibilă îmbinarea conținutului OpenGL cu acestea ✗ uşurează programarea utilizând OpenGL ✗ oferă un widget special, care se comportă ca şi celelalte widget-uri dar foloseşte OpenGL Dragoş Acostăchioaie - http://www.unixinside.org
  • 20. Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012 Modulul QtScript ✗ Qt include un motor de scripturi ECMA, bazat pe JavaScriptCore ✗ face posibilă integrarea obiectelor Qt (derivate din QObject) şi utilizarea sistemului de semnale şi sloturi în scripturi, deci integrarea între C++ şi scripturi ✗ include un depanator pentru scripturi Qt, deci poate raporta erorile din scripturi şi poate ajuta la localizarea acestora Dragoş Acostăchioaie - http://www.unixinside.org
  • 21. Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012 Modulul QtSql ✗ oferă conectivitate cu cele mai importante sisteme de baze de date relaţionale ✗ suportă ODBC, MySQL, PostgreSQL, SQLite, ibase, Oracle, Sysbase, DB2 (drivere modulare) ✗ oferă o interfaţă independentă de sistemul de baze de date utilizat, asigurând o bună portabilitate ✗ se poate folosi împreună cu modelul de programare Model-View- Controller Dragoş Acostăchioaie - http://www.unixinside.org
  • 22. Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012 Arhitectura Model-View-Controller ✗ arhitectura Model-View-Controller este folosită pentru afişarea şi manipularea datelor provenite din orice sursă (inclusiv SQL) ✗ gestionează relaţia dintre informaţii şi modul de afişare a acestora ✗ datele pot fi reprezentate vizual în tabele, liste, liste arborescente, form-uri sau după dorinţa programatorului Dragoş Acostăchioaie - http://www.unixinside.org
  • 23. Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012 Modulele QtXml şi QtXmlPatterns ✗ sistem pentru scrierea şi citirea documentelor XML şi implementări ale protocoalelor SAX și DOM ✗ include XQuery, un limbaj asemănător SQL, cu ajutorul căruia se poate parcurge un document XML, din care se pot alege unele elemente pentru export în alt XML sau în alt format ✗ suportă XPath 2.0, limbajul de transformare XSLT şi validarea schemelor XML Dragoş Acostăchioaie - http://www.unixinside.org
  • 24. Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012 Modulul QtWebKit ✗ conține un motor de browser HTML – WebKit - care simplifică includerea de conținut web în aplicații ✗ suportă HTML, XHTML, SVG, CSS şi JavaScript ✗ suportă includerea de fişiere Flash şi elemente audio sau video ✗ permite conectarea JavaScript cu obiecte Qt Dragoş Acostăchioaie - http://www.unixinside.org
  • 25. Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012 Qt Installer ✗ arhitectură care oferă un set de instrumente şi utilitare pentru realizarea de sisteme de instalare ale aplicaţiilor ✗ funcţionează pe Linux, MacOS şi Windows şi au aspectul nativ al platformei utilizate ✗ sistemul de instalare este configurabil, putându-se adăuga noi widget-uri şi crea scripturi pentru a realiza operaţiuni noi ✗ sistemul de instalare poate fi offline (conţin toate componentele necesare) sau online (conţinutul poate fi descărcat de pe un server Web) ✗ oferă şi posibilitate de actualizare ulterioară a conţinutului aplicaţiei Dragoş Acostăchioaie - http://www.unixinside.org
  • 26. Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012 Mediul integrat de dezvoltare Qt Creator ✗ wizard pentru creare/import proiecte Qt ✗ editor avansat de cod C++/QML/JavaScript ✗Qt Designer pentru proiectarea elementelor ce compun interfaţa utilizator, integrat ✗ Help Qt integrat ✗sistem de compilare a proiectelor (qmake şi CMake) ✗ sistem de gestiune a fişierelor din proiect ✗ sisteme de control al versiunilor ✗ depanarea aplicaţiilor Dragoş Acostăchioaie - http://www.unixinside.org
  • 27. Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012 Mediul integrat de dezvoltare Qt Creator ✗ Wizard pentru proiecte Qt ✗ realizarea de proiecte noi Qt ✗ generează automat proiectul şi fişierele de bază ✗ Editor avansat de cod sursă C++/Javascript ✗ syntax highlighting ✗ completare automată a claselor membre, metodele şi argumentele funcţiilor, pentru clasele Qt şi cele definite de programator ✗ marcarea automată a erorilor de sintaxă în timpul editării ✗ auto-indentare ✗ posibilitatea de expandare/restrângere a funcţiilor ✗ căutare incrementală a cuvintelor-cheie în timpul editării ✗ comutarea uşoară între declaraţia şi definiţia unei metode ✗ posibilitatea de a face semne de carte în cadrul codului sursă ✗ posibilitatea de a lucra fără mouse şi de a deschide ferestre de editare multiple Dragoş Acostăchioaie - http://www.unixinside.org
  • 28. Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012 Mediul integrat de dezvoltare Qt Creator ✗ Qt Designer integrat pentru proiectarea elementelor interfeţei utilizator ✗ se bazează pe editarea de form-uri, sunt generate fişiere de tip XML ✗ tehnologie de tip drag-and-drop pentru widget-uri ✗ nu este necesară recompilarea intregului proiect ✗ permite conectarea semnalelor şi sloturilor ✗ permite definirea acţiunilor pentru widget-uri ✗ pot fi utilizate layout-urile pentru a nu defini dimensiunea şi poziţia widget-urilor ✗ permite previzualizarea aspectului form-urilor Dragoş Acostăchioaie - http://www.unixinside.org
  • 29. Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012 Mediul integrat de dezvoltare Qt Creator ✗ Help pentru biblioteca Qt integrat ✗ poate fi accesat în timpul editării prin poziţionarea pe un cuvânt-cheie ✗ sistem de compilare a proiectului ✗ prin intermediul sistemului qmake propriu Qt sau prin Cmake ✗ sistem de gestiune a fişierelor din proiect ✗ permite localizarea uşoară a unui fişier din proiect după tipul şi numele acestuia ✗ sisteme de control al versiunilor ✗ sunt suportate: Git, Subversion (SVN), CVS şi Perforce Dragoş Acostăchioaie - http://www.unixinside.org
  • 30. Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012 Mediul integrat de dezvoltare Qt Creator ✗ compilarea şi depanarea aplicatiei ✗ sunt suportate gcc şi gdb, precum si Microsoft Visual Studio compiler/debugger ✗ pot fi stabilite puncte de întrerupere, rula aplicaţia linie-cu-linie sau instrucţiune-cu- instrucţiune, examina conţinutul variabilelor locale şi globale (variabilele compuse pot fi vizualizate în formă arborescentă) ✗ compilarea unei aplicaţii pentru dispozitive mobile ✗ permite compilarea şi execuţia unei aplicaţii pentru un anumit tip de dispozitiv mobil (modulul QTestLib) ✗ Qt Simulator ✗ Permite executia şi testarea aplicaţiei în condiţii similare rulării pe dispozitivul mobil Dragoş Acostăchioaie - http://www.unixinside.org
  • 31. Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012 Instrumente pentru localizare ✗ Qt Linguist – set de instrumente pentru localizarea aplicaţiilor Qt ✗ aplicaţie dedicată traducerii textelor din elementele de interfaţă, uşor de utilizat şi de persoanele fără cunostinţe tehnice ✗ suportă Unicode 5.0 ✗ pot fi manipulate mai multe limbaje într-un singur document ✗ cuvintele sau frazele sunt introduse în codul sursă într-o limbă prestabilită utilizând sintaxa tr(“frază de tradus”) ✗ traducerile sunt stocate în fişiere dedicate, nefiind necesară modificarea codului sursă ✗ permite şi utilizarea formatelor XLIFF (XML Localization Interchange File Format) şi gettext (po) Dragoş Acostăchioaie - http://www.unixinside.org
  • 32. Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012 Arhitectura Qt Mobility ✗ colecţie de API-uri destinate dispozitivelor mobile/embedded ✗ cuprinde: ✗ Connectivity – facilitează comunicaţia între dispozitive locale ✗ Contacts – transferul de informaţii din agendă între dispozitive locale sau la distanţă ✗ Document Gallery – navigarea prin documente şi obţinerea de meta-informaţii ✗ Feedback – oferă utilizatorilor răspunsuri tactile şi audio ✗ Location API – servicii de localizare, hărţi şi navigare ✗ Messaging – accesul la servicii de mesagerie ✗ Multimedia – navigarea, rularea şi înregistrarea de conţinut media ✗ Organizer – calendar, planificator şi alte date personale ✗ Publish and Subscribe – publicarea de conţinut ✗ Qt Service Framework – permite utilizarea de servicii diverse ✗ Qt Mobility QML Elements – elemente QML pentru dispozitive mobile ✗ Qt Mobility QML Plugins – plugin-uri QML pentru proiectul Qt Mobility ✗ Sensors – acces la senzorii dispozitivelor ✗ System Information – acces la informaţii privind sistemul Dragoş Acostăchioaie - http://www.unixinside.org
  • 33. Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012 Qt în viitor ✗ este în curs de dezvoltare Qt versiunea 5 (a fost lansată versiunea alpha) ✗ noutăţi principale: ✗ simplificarea (unificarea) arhitecturii generale a sistemului Qt ✗ îmbunătăţirea portabilităţii Qt ✗ compatibilitate la nivel binar şi sursă cu Qt 4 ✗ se va pune accent cu prioritate pe dispozitive mobile/embedded ✗ se va pune accent pe dezvoltarea capabilităţilor grafice 2D şi 3D ale Qt (Qt Quick 2, Qt 3D, Qt Graphical Effects) ✗ dezvoltarea QML, accentul va fi pus pe JavaScript (Qt JS V8, Qt JSON DB, Qt WebKit 2) şi QML ✗ conectivitate şi cu alte limbaje decât QML, C++ şi JavaScript Dragoş Acostăchioaie - http://www.unixinside.org
  • 34. Şcoala de vară “Informatică la castel”, Macea, 27 aug.-1 sep. 2012 Qt. În loc de concluzie Qt – soluţie completă desktop, mobile, embedded Dragoş Acostăchioaie - http://www.unixinside.org