Che cosa è il Qt Framework

6

Click here to load reader

description

Introduzione al Qt Application Framework.

Transcript of Che cosa è il Qt Framework

Page 1: Che cosa è il Qt Framework

02. 2009

Open Source Qt Framework

Argomenti trattati:

- Cosa è Qt?

- Storia di Qt

- Perché usare Qt?

- Cross-platform

- KDE e Qt

- Linguaggi supportati

Notizie chiave:

Qt è gratis!

Qt è cross-platform

KDE usa Qt

Autore: P. Sereno

Questa presentazione è rilasciata sotto Licenza Creative Commons: Attribution-NonCommercial-NoDerivativeWorks (http://creativecommons.org/licenses/by-nc-nd/3.0/deed.it).

Questo documento può quindi essere riprodotto senza violare nessuna legge, sia in versione elettronica, sia in versione cartacea, purché sia riprodotto integralmente in tutte le sue parti, compresa la pagina che contiene queste informazioni:

Versione originale scaricabile dal sitohttp://www.sereno-online.com/site/

Tutti i marchi riportati in questa pubblicazione appartengono ai rispettivi proprietari.

Premessa

ScopoScopo di questa presentazione è fornire informazioni divulgative a un pubblico specifico. Questo tipo di pubblicazione si propone infatti di fornire una prima introduzione all’utilizzo del Qt Application Framework per lo sviluppo di applicazioni software cross-platform in ambito Open Source. Esulano dallo scopo di questo documento l’approfondimento degli aspetti legati alla licenza commerciale di Qt e l’approfondimento degli aspetti legali e/o normativi implicati dall’adozione di una licenza GPL o LGPL.

Page 2: Che cosa è il Qt Framework

Qt Framework Pagina 2 di 6

Qt è una libreria di classi ed un insieme di

strumenti per lo sviluppo di interfacce utente grafiche (GUI)

Qt è una libreria di classied un insieme di strumenti per lo sviluppo di interfacce utente grafiche (GUI) multi piattaforma, e’ conosciuto infatti anche con il nome di toolkit Qt.Sviluppato in origine, dalla norvegese Trolltech, ora acquistata da Nokia, Qt permette lo sviluppo software secondo la filosofia “write once, compile anywhere”, che significa letteralmente “scrivi una sola volta e compila ovunque”. In altre parole, Qt permette agli sviluppatori di scrivere codice sorgente perfettamente compilabile su diversi sistemi operativi, quali ad esempio MS Windows, Mac OS X, Linux, Solaris, HP-UX, molte versioni UNIX con grafica X11 ed embedded Linux.

Che cosa è Qt?

Qt è disponibile per il download all’indirizzo: http://www.qtsoftware.comE’ possibile scaricare gli eseguibili e i sorgenti dell’intero toolkit per i diversi sistemi operativi supportati. A partire alla versione 4.5 il repository

Qt è gratis!

Cio’ e’ stato reso possibile grazie all’adozione di un’interfaccia di programmazione delle applicazioni (API) unica ed indipendente dall’hardware e dal software di sistema.Insieme con la libreria di classi, vengono forniti strumenti di supporto per il design grafico (Qt Designer), per la traduzione linguistica (Qt Linguist) e il manuale in linea (Qt Assistant).Molte distribuzioni Linux (tra le maggiori troviamo Debian, SuSE, RedHat) contengono il toolkit Qt, esso è la base su cui è stato costruito l’intero desktop environment KDE ed è stato integrato sin dall’inizio nell’IDE di riferimento per il mondo KDE, ovvero Kdevelop.Qt è attualmente usato in

molti campi per applicazioni sia open source, sia commerciali. Gli esempi più famosicitati dalla stessa Trolltech, sono Adobe Photoshop Album (elaborazione ed archiviazione immagini), Skype (comunicazioni VoIP) e Scribus (editing e desktop publishing).

verrà aperto allacollaborazione esterna. L’annuncio di questa nuova era dello sviluppo di Qt è stato infatti dato da Nokia ad inizio 2009 e si inserisce nel contesto inquadrato dall’adozione della LGPL (v. 2.1) che ha

crattere meno “virale” della GPL e consente, tra l’altro, di includere il codice Qt anche all’interno di applicazioni closed source.

Page 3: Che cosa è il Qt Framework

Qt FrameworkPagina 3 di 6

Il toolkit Qt fu inizialmente sviluppato dai fondatori della Trolltech, Haavard Nord ed Eirik Chambe Eng. Lo sviluppo di un toolkit in C++ per la realizzazione di Graphical User Interface (GUI) iniziò nel 1988, per conto di un’azienda svedese, che commissionò il lavoro ai due ricercatori e due anni più tardi, venne completato lo sviluppo di un’applicazione per la gestione di una banca dati di immagini, ottenute da apparecchiature mediche ad ultrasuoni; poiché questa applicazione doveva permettere l’esecuzione dell’interfaccia utente su sistemi MS Windows, Mac e UNIX, gettò le basi di quello che oggi è uno dei punti di forza di Qt: la portabilità del codice sorgente su diverse piattaforme o, come si dice correntemente, lo sviluppo “cross-platform”.

Nel 1991 si iniziò a scrivere le prime classi di Qt a seguito dell’idea di implementazione del meccanismo di Signals&Slots, un semplice ma potente modo per far comunicare tra loro le classi del toolkit. Nel 1993, dopo aver trascorso due anni a lavorare sul progetto senza contratti e senza stipendio, Haavard ed Eirik resero disponibile il primo kernel grafico e decisero di entrare in affari presentando al mondo “il miglior GUI toolkit in C++ multipiattaforma”.

Il 1994 non iniziò nel

Storia di Qtmigliore dei modi e si dovette attendere sino ad aprile 1995 per avere il primo contratto; il nome Qt venne scelto perché la lettera ‘Q’, tra i caratteri disponibili su Emacs, piaceva ad Haavard e la lettera ‘t’ venne aggiunta per rappresentare la parola inglese “toolkit” (letteralmente l’insieme di strumenti di lavoro).

Il 20 maggio venne rilasciata la versione 0.90 del toolkit e resa disponibile su sunsite.unc.edu, sei giorni dopo venne annunciata sul newsgroup comp.os.linux.announce.

Questa fu la prima release pubblica di Qt, essa poteva essere usata sia per lo sviluppo di interfacce grafiche per MS Windows, sia per Linux ed offriva le stesse API su entrambe le piattaforme. Qt fu reso disponibile secondo due licenze d’uso sin dal primo giorno: la licenza commerciale serviva per lo sviluppo di applicazioni commerciali o “close source” e la free software edition per lo sviluppo di applicazioni open source.

Nel marzo 1996, l’agenzia spaziale europea (ESA) divenne il secondo clientedella Trolltech e da questo momento iniziò un periodo che portò in breve tempo al rilascio della versione 0.97 (maggio), della versione 1.0 (settembre) e prima della fine dell’anno si giunse alla versione 1.1 usata da otto diversi clienti.

Nell’aprile 1997 il fondatore del progetto KDE, Mattias Ettrich decise di adottare Qt per il suo progetto e, con il rilascio della versione 1.2, il toolkit Qt divenne lo standard “de facto” per la realizzazione di GUI in C++ per Linux.

Nel 1998, Mattias decise di entrare a far parte del team di sviluppatori Trolltech (attualmente ricopre il ruolo di vice presidente) e contribuì al rilascio della versione 2.0. Questa versione conteneva un gran numero di cambi nell’architettura e rappresentò un notevole balzo in avanti nella realizzazione di un toolkit stabile e maturo; vennero aggiunte quaranta nuove classi, tra cui il supporto per l’UNICODE e nell’agosto del 1999 vinse il LinuxWorld award come miglior libreria software.

L’anno 2000 segna l’ingresso sul mercato dell’ambiente Qt/embedded, concepito appositamente per supportare la piattaforma Linux/embedded. In quell’anno, Trolltech decise di cambiare la sua politica di licenza da QPL (politica open source appositamente redatta dalla Trolltech) a favore della ben più nota ed accettata GPL. Questo cambiamento venne accolto con entusiasmo dalle comunità open source (KDE per prima) di tutto il mondo.

Qt: le fondamenta su cui è stato costruito KDE.

Page 4: Che cosa è il Qt Framework

Qt Framework Pagina 4 di 6

Il nuovo attesissimo balzo in avanti avvenne nel 2001 con il rilascio della versione 3.0.

Qt era ora disponibile per MS Windows, UNIX, Linux, Embedded Linux e Mac OS X. Qt 3.0

Qt 3

A partire dalla quarta major release, sono state introdotte nuove tecnologie nel "core" dellaLibreria, particolarmente utili per KDE.Fondamentalmente esse sono:

Arthur, il nuovo sistema di disegno dei widgets.

Nel giugno 2008 la finlandese Nokia ha acquistato la piccola Trolltech offrendo circa 850 milioni di corone norvegesi (poco più di 100 milioni di euro), una somma significativamente superiore al valore delle azioni di Trolltech.Occorre sottolineare che al momento dell’acquisizione, Nokia è entrata in possesso, unitamente al Qt framework, di una tra le

Qt 4

2008: Nokia acquista Trolltech

Il nuovo attesissimo balzo in avanti avvenne

nel 2001 con il rilascio della versione 3.0.

Nel giugno 2008 la finlandese Nokia ha acquistato la piccola

Trolltech offrendo circa 850 milioni di corone

norvegesi (poco più di 100 milioni di euro)

aggiunse quarantadue nuove classi e il codicesuperò le 500.000 linee.

Dal 2001 al 2005 si è passati attraverso numerose minor releases che hanno fatto del toolkit Qt un mito tra gli

sviluppatori (open source e non) di tutto il mondo, sia per le eccellenti caratteristiche tecniche del prodotto, sia per la politica di rilascio del prodotto aperta elungimirante.

Scribe, il renderer per testo unicode

Mainwindow, ovvero la nuova modalità di gestione della main window di una qualsiasi applicazione Qt.

Unitamente a ciò, è stato introdotto il nuovo motore

di scripting QtScript che va a sostituireil "glorioso", ma meno performante QSA.

più mature piattaforme open source per il mercato embedded/mobile:Qtopia, anch’essa rilasciata sotto licenza GPL.

La versione Phone Edition di Qtopia (piattaforma operativa per la telefonia cellulare), di recente introduzione nel mercato, ha sicuramente rappresentato per Nokia un’opportunità

interessante per contrastare l’ascesa di Android come futuro standard per la telefonia cellulare.

Page 5: Che cosa è il Qt Framework

Qt FrameworkPagina 5 di 6

Per sistemi UNIX, Qt rappresenta un’ottima possibilità, è portabile, è veloce, facile da imparare ed usare, inoltre, se si scrive software open source per Linux, BSD, Solaris o molte altre varianti UNIX, Qt è gratuito. In altre parole, non si deve pagare alcuna licenza.

In caso contrario, se si sviluppa codice commerciale, occorre acquistare una licenza per lo sviluppo (ma non si dovrà pagare alcuna

Perché usare Qt ?

Un toolkit che permetta lo sviluppo di GUI multi-piattaforma, deve implementare una strategia per nascondere al programmatore i dettagli dovuti alle API native del sistema operativo sottostante.

Esistono fondamentalmente tre strategie differenti adatte allo scopo e prendono il nome di “API layering”, “API emulation” e “GUI emulation”.

La strategia di API layering (letteralmente stratificazione delle API), prevede la costruzione di una nuova API fornita da uno strato software che viene localizzato al di sopra della API nativa. I vantaggi offerti da questa soluzione sono una relativa semplicità di programmazione ed una totale conformità con il

Cross-Platform: cosa vuol dire?

Un toolkit che permetta lo sviluppo di GUI multi-piattaforma, deve implementare una strategia per nascondere al programmatore i dettagli dovuti alle API native del sistema operativo sottostante.

royalty per ogni applicazione venduta). Supponiamo che si voglia scrivere software commerciale closed source per la piattaforma Windows, per quale motivo si dovrebbe usare Qt, per il mondo Windows esistono già diversi ambienti di sviluppo commerciali e diversi toolkit GUI? La risposta a questa domanda può arrivare se si pensa alla portabilità.

Scrivere applicazioni con Qt permette infatti di

portare il codice sorgente scritto anche su altre piattaforme, sarà sufficiente la ricompilazione e la nostra applicazione potrà essere eseguita in modo nativo sulla nuova piattaforma.

I principali linguaggi di porgrammazione supportati sono:

C++JavaPython (PyQt)

look&feel (aspetto estetico) nativo. Per contro lo svantaggio principale è dovuto alla lentezza dei programmi scritti, basandosi sulle nuove API; infatti lo strato software aggiuntivo va ad appesantire l’esecuzione con inevitabili rallentamenti.

La strategia di API emulation (letteralmente emulazione della API), consiste nell’emulare le API di un unico sistema su tutte le altre piattaforme. In questo caso, non occorre innestare uno strato software al di sopra delle API native per la piattaforma emulata, occorre bensì inserirla per le altre piattaforme, diverse da quella usata come riferimento. Benché questa soluzione sembri risolvere i problemi di portabilità, in realtà è difficile da ottenere, in

quanto se le piattaforme sono tra loro troppo differenti, l’uso di una API di riferimento è molto complicato da realizzare.

La terza strategia è quella adottata da Qt e consiste nell’emulare il vero comportamento di una GUI; per fare ciò, vengono usate solamente le primitive grafiche di base, offerte da ciascuna piattaforma, quali ad esempio le funzioni per tracciare un punto, una linea, un cerchio. Il vantaggio di questa soluzione è evidente, non si appesantisce l’applicazione con uno strato software aggiuntivo e neppure si devono uniformare tutte le API dei sistemi su cui garantire la portabilità.

Qt si integra perfettamente con gli strumenti di sviluppo open source di Linux.

Page 6: Che cosa è il Qt Framework

La potenza di Qt è di fondamentale importanza per KDE, il desktop environment di Linux è stato infatti costruito su questa libreria. Il ricco repertorio di widgets (oggetti grafici di interfaccia utente) e la quantità di classi offerte da questo toolkit (ad esempio la gestione dei caratteri UNICODE, interfacciamento verso database, gestione protocolli TCP ed UDP) ha fornito agli sviluppatori KDE un substrato “intellettuale” su cui basare l’intera architettura software.

La filosofia di Qt è stata ripresa ed estesa, sino a consentire a KDE di offrire classi, oggetti grafici e plugins agli sviluppatori applicativi. Oggi, uno sviluppatore Qt/KDE ha a disposizione una collezione di componenti software estremamente ricca e performante per sviluppare la sua applicazione. In altre

P. SerenoFondatore di alcuni progetti open source basati sul Qt framework, collabora con

riviste specializzate e segue da diversi anni l’evoluzione del

free softwarein Italia.

Scarica guide e tutorial gratuiti di

programmazione grafica open source!

Le trovi all'indirizzo:www.sereno-online.com/site

intenzioni degli sviluppatori di KDE e malgrado il fatto che il codice di KDE in sè fosse software libero, KDE non poteva mai fare parte di un sistema operativo completamente libero”.Per arginare il pericolo derivante dall’affermarsi di un desktop environment non-libero, sulla sua piattaforma libera GNU/Linux, Stallman si mosse attivamente per cercare un’antagonista al progetto KDE e lo trovò nel progetto GNOME, il GNU desktop. Dall’anno della sua fondazione, 1997, sino al 1999 (e ancor oggi), GNOME fu una spina nel fianco per i programmatori KDE; chi ha seguito le vicende dei due progetti, ricorda ancora le battaglie sui newsgroup a colpi di post e le reciproche accuse di “filoeuropeismo” (KDE) e “filoamericanismo” (GNOME).

parole, se è valido il detto che “buoni programmatori scrivono buoni programmi” ed “eccellenti programmatori rubano codice eccellente”, allora Qt e KDE offrono le migliori condizioni per questo “furto”, grazie alla filosofia open source ed alla licenza GPL.

Trolls contro Gnomi La storia vissuta dai programmatori KDE non è stata però molto facile all’inizio, il fatto di usare le librerie Qt che nella versione 1.1 non erano disponibili con licenza GPL, scatenò le ire della comunità open source, in particolare Richard Stallman si scagliò in prima persona contro il loro impiego. Celebri infatti sono le sue parole sul tema KDE e Qt:

“Il disegno di KDE è stato basato su un errore fondamentale: l’uso della libreria Qt (che allora era software non-libero). Malgrado le buone

KDE e Qt