Gianni Valdambrini Qt Certified Specialist Everywhere Firenze, 25 settembre 2012
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
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
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
Qt: le piattaforme Embedded Desktop Linux Embedded Windows Mobile Windows Linux Mac Os X Symbian Windows CE In aggiunta alle versioni ufficiali, sono presenti numerosi altri porting effettuati/mantenuti dalla comunità. 5 / 30
Qt: chi lo usa
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
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
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
Qt: i moduli Qt è suddiviso in vari moduli, in modo che sia possibile utilizzare ciò di cui abbiamo bisogno senza doversi portare tutto dietro. Declarative Networking Core GUI WebKit Xml Database Scripting OpenGL Unit Testing 10 / 30
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
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
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
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
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
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
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
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
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
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.
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!
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
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
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
3 motivi per scegliere Qt 0/3 (embedded version)
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
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
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
Let's Talk office +39 055 3984627 e-mail aleister@develer.com web www.develer.com
License Creative Commons Attribution 3.0 Unported