Che cosa è il Qt Framework

paolosereno 2,502 views 6 slides Jun 22, 2009
Slide 1
Slide 1 of 6
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6

About This Presentation

Introduzione al Qt Application Framework.


Slide Content

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 riprodottosenza 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 sito
http://www.sereno-online.com/site/
Tutti i marchi riportati in questa pubblicazione appartengono ai rispettivi
proprietari.
Premessa
Scopo
Scopo di questa presentazioneè fornireinformazioni divulgativea 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 ambitoOpen Source.Esulanodallo
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.

Qt Framework Pagina 2di 6
Qt è una libreria di
classied un insieme di
strumenti per lo
sviluppo di interfacce
utente grafiche (GUI)
Qt è una libreria di classi
ed 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 inorigine, 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.com
E’ possibile scaricare gli
eseguibili e i sorgenti
dell’intero toolkit per i
diversi sistemi operativi
supportati. A partire alla
versione 4.5 ilrepository
Qt è gratis!
Cio’ e’ stato reso possibile
grazieall’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
riferimentoper il mondo
KDE, ovvero Kdevelop.
Qt è attualmente usato in
molti campi per
applicazioni sia open
source, sia commerciali.
Gli esempi più famosi
citati dalla stessa
Trolltech, sono Adobe
Photoshop Album
(elaborazione ed
archiviazione immagini),
Skype (comunicazioni
VoIP) e Scribus (editing e
desktop publishing).
verrà aperto alla
collaborazione esterna.
L’annuncio di questa
nuova era dello sviluppo
di Qt è stato infatti dato da
Nokia ad inizio 2009 e si
inserisce nel contesto
inquadratodall’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
diapplicazioni closed
source.

Qt FrameworkPagina 3di 6
Il toolkit Qt fu inizialmente
sviluppato dai fondatori
della Tr olltech, 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
completatolo sviluppo di
un’applicazione per la
gestione di una banca dati
diimmagini, 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 Qt
migliore dei modi e si
dovette attendere sino ad
aprile 1995 per avere il
primo contratto; il nomeQt
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 cliente
della Trolltech e da questo
momento iniziò un periodo
che portò in breve tempo
alrilascio 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
dientrare 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
dicambi 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.

Qt Framework Pagina 4di 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" della
Libreria, 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
almomento
dell’acquisizione, Nokia è
entrata in possesso,
unitamente al Qt
framework, di una tra le
Qt 4
2008: Nokia acquista Trolltech
Ilnuovo 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 dicorone
norvegesi(poco più di
100 milioni di euro)
aggiunse quarantadue
nuove classi e il codice
superò 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 e
lungimirante.
Scribe, il renderer per
testo unicode
Mainwindow, ovvero la
nuova modalità di
gestione della main
window di una qualsiasi
applicazioneQt.
Unitamente a ciò, è stato
introdotto il nuovo motore
di scripting QtScriptche
va a sostituire
il "glorioso", ma meno
performante QSA.
più mature piattaforme
open sourceper 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
rappresentatoper Nokia
un’opportunità
interessante per
contrastare l’ascesa di
Android come futuro
standardper la telefonia
cellulare.

Qt FrameworkPagina 5di 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
losviluppo (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
alloscopo 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: cosavuol dire?
Un toolkit che permetta
lo sviluppo di GUI multi-
piattaforma, deve
implementare una
strategiaper
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++
Java
Python (PyQt)
look&feel (aspetto
estetico) nativo. Per contro
losvantaggio 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 altrepiattaforme. In
questo caso, non occorre
innestare uno strato
software al di sopra delle
API native per la
piattaforma emulata,
occorre bensì inserirla per
lealtre 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, qu ali 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.

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. Sereno
Fondatore di alcuni progetti
open source basati sul Qt
framework, collabora con
riviste specializzate e segueda
diversi annil’evoluzione del
free software
in Italia.
Scarica guide etutorial
gratuiti di
programmazione grafica
open source!
Letroviall'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
allalicenza 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