Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Qt everywhere - Gianni Valdambrini

Qt everywhere - Gianni Valdambrini

Avatar for Better Embedded

Better Embedded

September 25, 2012
Tweet

More Decks by Better Embedded

Other Decks in Technology

Transcript

  1. Gianni Valdambrini – [email protected] Cosa è Qt • Qt è

    un framework cross platform, con cui potete scrivere il codice un'unica volta ed effettuare il deploy su vari sistemi desktop ed embedded. • Qt implementa il principio Hollywood (“non chiamarci, ti chiameremo”). • Qt è anche una libreria, mettendo a disposizione un ampio set di componenti già pronti all'uso. 2 / 30
  2. Gianni Valdambrini – [email protected] Cosa è Qt • Le applicazioni

    Qt compilano sulle varie piattaforme supportate senza cambiamenti... • … e si comportano (ed appaiono) nello stesso modo su di esse... • … pur rispettando le tradizionali caratteristiche di ogni piattaforma. 3 / 30
  3. Gianni Valdambrini – [email protected] Qt: i linguaggi • Qt è

    scritto in C++ standard, tuttavia fa uso estensivo di un generatore di codice chiamato moc per implementare alcune funzionalità di alto livello non previste dal linguaggio. • E' possibile estendere le applicazioni tramite embedding di linguaggi di scripting (QtScript, PythonQt, ecc..). • Inoltre è possibile scrivere l'intera applicazione in Python utilizzando l'apposito binding – PyQt. 4 / 30
  4. Gianni Valdambrini – [email protected] Qt: le piattaforme In aggiunta alle

    versioni ufficiali, sono presenti numerosi altri porting effettuati/mantenuti dalla comunità. Desktop Windows Linux Mac Os X Linux Embedded Windows Mobile Symbian Windows CE Embedded 5 / 30
  5. Gianni Valdambrini – [email protected] Qt: licenze Qt è disponibile con

    due licenze: • Open source (LGPL v. 2.1) permette di sviluppare applicazioni → con linking dinamico alle Qt senza dover rilasciare il codice o pagare costi di licenza. • Commerciale per sviluppatore e con costo dipendente dal → numero di piattaforme “target”, permette di usare in piena libertà Qt ed è comprensivo di supporto. Per saperne di più: • http://qt.digia.com/licensing • http://www.slideshare.net/qtbynokia/qt-licensing-explained 7 / 30
  6. Gianni Valdambrini – [email protected] Un veloce sguardo a Qt Qt

    mette a disposizione un gran quantitativo di funzionalità, realizzate attraverso un alto numero di classi che tuttavia mantengono un'ottima semplicità grazie alla struttura “piatta”. Ecco alcune delle funzionalità offerte da Qt: • Internazionalizzazione e supporto unicode • Multi-threading e multi-processing • Introspezione e RTTI • Implicit Sharing • Gestione automatica lifetime oggetti • Meccanismi di comunicazione all'interno dell'applicazione anche fra thread diversi (signal – slot) 8 / 30
  7. Gianni Valdambrini – [email protected] Un veloce sguardo a Qt Altre

    funzionalità “chiave” offerte da Qt sono: • Meccanismi di IPC (shared memory, dbus, tcp/ip, ...) • Model/view framework • Contenitori e strutture dati • Supporto alla programmazione concorrente • Sistema di painting • Unit testing 9 / 30
  8. Gianni Valdambrini – [email protected] Qt: i moduli Qt è suddiviso

    in vari moduli, in modo che sia possibile utilizzare ciò di cui abbiamo bisogno senza doversi “portare tutto dietro”. Core GUI WebKit OpenGL Declarative Networking Scripting Database Xml Unit Testing 10 / 30
  9. Gianni Valdambrini – [email protected] Qt: i moduli • QtCore offre

    un layer di compatibilità sopra le piattaforme supportate, includendo al suo interno il loop degli eventi e numerose classi di utilità. • Per questo motivo è quindi molto indicato per realizzare applicazioni non GUI come demoni o processi di sistema. • QtGui si occupa di effettuare il disegno della GUI delegando al sistema operativo unicamente la gestione delle finestre top-level. 11 / 30
  10. Gianni Valdambrini – [email protected] Qt: i moduli • QtWebKit permette

    alle applicazioni Qt di interfacciarsi con un vero e proprio motore di rendering per pagine web. • E' quindi possibile realizzare applicazioni “ibride”, composte da una parte in linguaggio nativo e una parte realizzata con tecnologie web. • QtNetwork offre le principali funzionalità di rete integrate con il loop degli eventi (ma possono essere usate anche senza). 12 / 30
  11. Gianni Valdambrini – [email protected] Rappresenta l'evoluzione nel modo di progettare

    GUI: se con QtGui è possibile fare classiche applicazioni desktop Qt Quick nasce dall'esigenza di realizzare GUI fluide e dinamiche. Qt Quick è realizzato “sopra” Qt in modo da sfruttarne i pregi ed ereditarne le funzionalità (accelerazione hardware, internazionalizzazione, ecc..) 13 / 30
  12. Gianni Valdambrini – [email protected] Qt Quick Qt Quick è un

    insieme di tecnologie: • Il linguaggio dichiarativo, chiamato Qml ed estensione di JavaScript. • Il runtime, che permette l'accesso a funzionalità e strutture dati di Qt/C++. • QtCreator, che integra un editor avanzato di Qml, un designer grafico di UI e un debugger/profiler. Qt Quick velocizza la realizzazione di GUI ed è quindi molto indicato per il fast prototyping di applicazioni. 14 / 30
  13. Gianni Valdambrini – [email protected] Qt per Linux Embedded Qt è

    particolarmente adatto per lo sviluppo su dispositivi embedded, e gira su ogni Linux con un compilatore C++ “decente”. 15 / 30
  14. Gianni Valdambrini – [email protected] Qt per Linux Embedded Per i

    dispositivi dotati di framebuffer, Qt offre un vero e proprio gestore di finestre (chiamato QWS – Qt Windows System). • In questo caso Qt scrive direttamente su framebuffer, con un meccanismo di double buffering. • Le applicazioni che utilizzano funzionalità specifiche dell'embedded possono comunque girare su desktop grazie a QVFB, un simulatore di framebuffer integrato in Qt. 16 / 30
  15. Gianni Valdambrini – [email protected] Strumenti di sviluppo QtSDK è l'ambiente

    di sviluppo completo, ed include: • QtCreator IDE, un potente ma leggero IDE per lo sviluppo e design delle applicazioni; • le librerie Qt, comprensive di esempi e demo; • la documentazione di Qt e dei suoi tools; • un update manager, per essere sempre aggiornati con le ultime versioni di Qt. Separatamente dal QtSDK viene fornito anche il Qt Linguist, strumento per traduttori che desiderano localizzare l'applicazione. 17 / 30
  16. Gianni Valdambrini – [email protected] Qt Creator IDE L'IDE di Qt

    Creator include: • un editor avanzato C++/Qml con autocompletamento e tools di refactoring • gestione di progetti e del sistema di build • QtDesigner per GUI tradizionali e Qml • un sistema di help integrato ed espandibile • un debugger visuale ed integrato con le strutture dati di Qt • supporto per i principali sistemi di controllo di revisione 18 / 30
  17. Gianni Valdambrini – [email protected] Qt Project Qt è sviluppato, a

    partire dal 2011, come progetto open source denominato Qt Project e che include privati e aziende. In precedenza Qt, benchè distribuito anche con licenza open source, era sviluppato unicamente dai proprietari di Qt. Questo cambiamento ha incrementato fortemente il numero di contributori a Qt, che quindi potrà beneficiarne diventando sempre più sviluppato, testato e mantenuto. 19 / 30
  18. Gianni Valdambrini – [email protected] Qt 5 Qt5 nasce dalla volontà

    di mettere Qt Quick al centro dell' ecosistema Qt, riscrivendo parte dello stack grafico per ottimizzarne le prestazioni sfruttando appieno l'accelerazione hardware.
  19. Gianni Valdambrini – [email protected] Qt Quick v. 2 Grazie al

    lavoro di riscrittura dello stack grafico le prestazioni di applicazioni che usano Qt Quick v. 2 con Qt5 potranno più che raddoppiare in alcuni casi!
  20. Gianni Valdambrini – [email protected] Qt 5 Altri importanti cambiamenti architetturali

    della nuova versione di Qt sono: • maggiore modularità: i vari moduli di Qt4 sono stati ripensati e suddivisi con una granularità maggiore. • Esempio: QtGUI non sarà più dipendenza di Qt Quick • porting più facili su altre piattaforme: adesso il codice di Qt è esso stesso cross platform ed utilizza un layer chiamato QPA per interfacciarsi con il sistema operativo. 22 / 30
  21. Gianni Valdambrini – [email protected] Qt 5 - porting Uno degli

    obbiettivi nello sviluppo di Qt5 è stato quello di minimizzare i cambiamenti richiesti alle applicazioni. Per questo è stato rimosso o cambiato solo quanto deprecato con Qt4, mantenendo la compatibilità a livello dei sorgenti a circa il 99%. Come conseguenza, alcune applicazioni (es: QtCreator) sono già perfettamente funzionanti sia con Qt4 che con Qt5. 23 / 30
  22. Gianni Valdambrini – [email protected] Il futuro di Qt 5 Qt5

    è attualmente in beta, e la data prevista per la release finale è Novembre 2012. Successivamente, alcuni dei più importanti obbiettivi dichiarati dagli sviluppatori di Qt sono: • espandere la libreria dei Widget per desktop. • portare Qt su piattaforme iOS e Android. • portare Qt su BlackBerry OS. 24 / 30
  23. Gianni Valdambrini – [email protected] 3 motivi per scegliere Qt 1/3

    (embedded version) Lo stesso codice può essere compilato ed eseguito su varie piattaforme embedded e desktop. Come conseguenza, gran parte dello sviluppo può essere svolto su Pc, riducendo la parte del testing e debugging da svolgere sull'hardware. In tal modo, sarà possibile scrivere applicazioni più velocemente, senza perdere tempo nel caricare l'applicazione su embedded. 26 / 30
  24. Gianni Valdambrini – [email protected] 3 motivi per scegliere Qt 2/3

    (embedded version) Le classi di Qt, e QtCore in particolare, offrono funzionalità avanzate tipiche di linguaggi di più alto livello, con cui è possibile scrivere applicazioni più velocemente. Es: QString supporto unicode, regexp, split, ecc.. → In aggiunta, la loro implementazione è fatta con un occhio di riguardo all'embedded, combinando: • ottime prestazioni • espansione codice minimale • modularità 27 / 30
  25. Gianni Valdambrini – [email protected] 3 motivi per scegliere Qt 3/3

    (embedded version) La prima versione di Qt risale al 1992: questo ne fa un framework con un'architettura solida e matura. Altre conseguenze sono: • è un framework molto ben testato e funzionante, utilizzato da una larga base di utenti. • dispone di una documentazione davvero ben fatta e di una vasta community. • è corredato di un gran numero di esempi e demo. 28 / 30