# Qt (toolkit)

Qt, in informatica ed in particolare nel campo della programmazione, è una libreria multipiattaforma per lo sviluppo di programmi con interfaccia grafica (a parte per la divisione menzionata sotto 'console') tramite l'uso di widget (congegni o elementi grafici). Qt, ampiamente utilizzato nell'ambiente desktop KDE, viene sviluppato dall'azienda Qt Software (meglio conosciuta come Trolltech o Quasar Technologies) di proprietà di Digia.
Qt si dovrebbe pronunciare come l'inglese cute, cioè "carino". La pronuncia in grafia italiana è chiùt, anche se la pronuncia più intuitiva cutì non è rara (parallelamente, esiste la pronuncia inglese chiuttì).

## Storia

Haavard Nord e Eirik Chambe-Eng (rispettivamente lo sviluppatore originale di Qt al CEO e il presidente della Trolltech) iniziarono lo sviluppo di "Qt" nel 1991. Tre anni prima la società era stata fondata come Quasar Technologies, poi cambiò il nome in Troll Tech, e infine in Trolltech.
Il toolkit fu chiamato Qt perché la lettera Q appariva bella nel carattere di Emacs Haavard, e la T fu ispirata dal Xt, il tool X. Un altro fattore può essere stato che la lettera Q non viene usata in norvegese, che sostituisce sistematicamente kv- a qu- in tutte le parole (in accordo con l'effettiva pronuncia): ciò rende la lettera Q "esotica", un po' come la K in italiano.
In norvegese, l'acronimo Qt si pronuncia cü-té: in grafia norvegese, potrebbe scriversi "kute", e, per quanto strano, è una parola composta che significa "tè di mucca".
Qt è utilizzato in diverse applicazioni note, ad esempio Telegram, Adobe Photoshop, Dolphin, software di grafica e disegno come Autodesk Maya o altri come WPS Office.

## Caratteristiche tecniche

Qt usa il linguaggio C++ standard con un estensivo uso del preprocessore C per arricchire il linguaggio, ma esistono interfacce per Java, Python, C, Perl e PHP. Gira sulle piattaforme principali ed integra funzioni per l'accesso ai database SQL, parsing di documenti XML ed API multipiattaforma per l'uso dei file. La principale caratteristica di Qt è la gestione degli oggetti e l'interazione tra la parte grafica e logica tramite segnali e slot, che permettono di assegnare facilmente funzionalità alla parte GUI e far interagire il codice creato con gli widget grafici.
La principale applicazione su cui si poggia è Qt Creator, IDE con le funzionalità sottoindicate presenti, principalmente Qt Designer. Esso supporta numerosi moduli di rete (Qt Network), interazione con grafici (Qt Charts), controlli multimediali (Qt Multimedia) e grafici (Qt Quick/Qt Widgets).

## Varianti

Le librerie Qt sono disponibili per queste piattaforme:
* Qt/X11 — Qt per X Window System;
* Qt/Mac — Qt per macOS di Apple;
* Qt/Windows — Qt per Microsoft Windows;
* Qt/Embedded — Qt per piattaforme embedded (palmari e simili).
Attualmente vengono offerte in quattro edizioni, disponibili per ciascuna delle piattaforme:
* Qt Console — versione embedded per lo sviluppo senza interfaccia grafica;
* Qt Desktop Light — versione base per applicazioni con interfaccia grafica, senza supporto rete e SQL;
* Qt Desktop — la versione completa;
* Qt Open Source Edition — la versione completa, per sviluppo di software libero.
Le prime tre versioni sono distribuite sotto una licenza commerciale; la versione libera, invece, è sotto licenza GPL. A partire da Qt 4 inoltre, a differenza di Qt 3.3, Qt viene pubblicato sotto doppia licenza (GPL e commerciale) anche su Windows.
L'edizione commerciale per Windows supporta Visual Studio; tutte supportano comunque il compilatore C++ GCC.
La squadra di KDE ha anche pubblicato un'edizione di Qt, chiamata Qt/Windows Free Edition — basata sul codice sorgente della versione Qt/X11 e licenziata sotto GPL, viene pubblicata per il progetto KDE via Cygwin. Questo era stato ispirato dal fatto che le versioni di Qt precedenti alla 4.0 non erano disponibili come software libero sotto Windows.

## Licenza

Attorno al 1998 accese polemiche scoppiarono quando divenne chiaro che KDE stava per diventare uno dei più importanti ambienti desktop per GNU/Linux. Poiché KDE era basato su Qt, molte persone nei movimenti open source e free software si preoccupavano che una parte essenziale del loro sistema operativo fosse non libera.
Per contrastare la situazione iniziarono due ambiziose iniziative: Harmony, che cercò di duplicare Qt sotto una licenza di software libero, e l'ambiente GNOME, che si basava sulle librerie GTK+ nel 1997.
Fino alla versione 1.45, Qt usò la licenza FreeQt — che non era né open source né free software perché, sebbene il codice sorgente fosse disponibile, non ne era consentita la ridistribuzione di versioni modificate. Con la pubblicazione della versione 2.0 della libreria, la licenza diventò la Q Public Licence (QPL), una licenza free software ma considerata dalla Free Software Foundation come incompatibile con la licenza GPL. Furono cercati dei compromessi tra KDE e la Trolltech in cui si decise che Qt non sarebbe potuto essere sotto una licenza più restrittiva della QPL, anche se la Trolltech fosse stata acquistata o fosse fallita. Questo consentì la creazione della KDE Free Qt foundation, la quale garantì che Qt sarebbe stato sotto la licenza BSD se nessuna versione open source di Qt fosse pubblicata nell'arco di 12 mesi.
Infine, la libreria Qt fu pubblicata sotto la licenza GPL a partire dalla versione 2.2 (per X11), con l'alternativa di scegliere la QPL. Per motivi legali la QPL è ancora disponibile come licenza per X11, ma la Trolltech la considera obsoleta e ne sconsiglia l'uso. Il 18 gennaio 2008 è stata annunciata la pubblicazione di Qt 3 e Qt 4 sotto licenza GPL.
Dopo l'acquisizione nel 2008 di Trolltech (ora Qt Development Frameworks) da parte di Nokia, il 14 gennaio 2009 l'omonima azienda annuncia la pubblicazione delle Qt 4.5 anche con licenza LGPL.

## Sistemi supportati

La prima versione di Qt ebbe solo due versioni: Qt/X11 per Unix e Qt/Windows per Windows. La versione per Windows fu distribuita con una licenza proprietaria. Alla fine del 2001 la Trolltech pubblicò Qt 3.0 aggiungendo il supporto per macOS. Questo supporto fu disponibile con una licenza proprietaria, fino a giugno 2003, quando la Trolltech pubblicò la versione 3.2 nella quale la versione per Mac OS X fu disponibile con licenza GPL. Nel giugno 2005 anche la versione per Windows fu distribuita con licenza open source. Qt4 supporta questi sistemi sia nella versione proprietaria che in quella open source. Dalla versione 4.6 aggiunge il supporto a Symbian S60. Nel 2009 è stato per la prima volta compilato per Haiku.

### Compilare ed eseguire il programma hello world

1. Creare una directory chiamata Hello 2. Inserire il codice di cui sopra in un file chiamato Hello.cpp nella directory Hello 3. All'interno della directory Hello lanciare
4. Eseguire ./release/Hello (Oppure release\Hello.exe in Windows)