Qt jest obecnie rozwijane przez organizacjęQt Project, do której oprócz niezależnych twórcówOpen Source należą m.in. firmyDigia,KDAB,ICS. Digia jest właścicielem praw do komercyjnej wersji Qt oraz do znaków towarowych, po zakupie od firmyNokia (będącej właścicielem pomiędzy styczniem 2008 a sierpniem 2012)[1].
Biblioteki Qt dostępne są w języku C++ i Java; mogą też być wykorzystywane w programach napisanych w innych językach, m.in.Ada (QtAda),C# (Qyoto/Kimono, QtSharp),Pascal,Perl (Perl Qt4),PHP (PHP-Qt),Ruby (QtRuby) iPython (PyQt, PySide). Charakteryzują się w pełni obiektową architekturą. Zawierają wiele technologii programowania graficznego interfejsu użytkownika, istniejących wcześniej jedynie wTk: mechanizmsygnałów i slotów, automatyczne rozmieszczaniewidżetów oraz zhierarchizowany system obsługizdarzeń.
Biblioteki Qt, oprócz obsługi interfejsu użytkownika, zawierają także niezależne od platformy systemowej moduły obsługi procesów, plików, sieci, grafiki trójwymiarowej (OpenGL), baz danych (SQL), językaXML, lokalizacji,wielowątkowości, zaawansowanej obsługi napisów orazwtyczek. Zawierają także własne, niezależne od bibliotekiSTL szablony klaskontenerów.
W skład Qt wchodzi wiele specjalistycznych narzędzi programistycznych. Są to m.in.:
moc (Meta Object Compiler) – specjalny preprocesor, który na podstawie plików nagłówkowych (*.h) generuje dodatkowe pliki źródłowe (*.cpp)
uic (User Interface Compiler) – kompilator plików *.ui zwykle generowanych za pośrednictwem programu Qt Designer
qmake – program do zarządzania procesem kompilacji; jego głównym zadaniem jest utworzenie, a później aktualizacja plikuMakefile na podstawie prostego opisu zawartego w definicji projektu (*.pro)
Pomysłodawcami i pierwszymi twórcami Qt byli Haavard Nord i Eirik Chambe-Eng. Projektowanie pierwszych klas biblioteki rozpoczęto w 1991 r. Rok później Chambe-Eng opracował koncepcję mechanizmu sygnałów i gniazd, który wkrótce stał się fundamentem biblioteki.
4 marca 1994 r. Nord i Chambe-Eng założyli firmę Quasar Technologies. W późniejszych latach zmieniała ona nazwy kolejno na Troll Tech, Trolltech, Qt Software iQt Development Frameworks. Inspiracją dla nazwy Qt była nazwa bibliotekiXt(inne języki) (X Toolkit), w której literę X zastąpiono literą Q (zdaniem twórców Qt, litera Q wyglądała najładniej jakoprzedrostek nazw klas w edytorzeEmacs)[3].
W 1995 firma otrzymała pierwszy kontrakt i zatrudniła pierwszego programistę. 20 maja 1995 na serwerzesunsite.unc.edu pojawiło się pierwsze oficjalne wydanie Qt – Qt 0.90. Mogło być ono używane do tworzenia aplikacji dla systemówUnix iWindows na dwóch licencjach: komercyjnej (Windows, Linux) i wolnej (Linux). Do końca 1996 sprzedano łącznie 18 licencji dla 8 różnych firm.
W 1997 twórcyKDE postanowili oprzeć swój produkt na bibliotece Qt. Dzięki temu szybko osiągnęła ona status jednej z najpopularniejszych bibliotek dla aplikacji okienkowych w C++ dla systemuLinux. Sukces ten stał się jednocześnie przyczyną obaw wielu zwolenników wolnego oprogramowania przed konsekwencjami rozpowszechnienia w środowisku systemu Linux programów opartych na własnościowej bibliotece nie podlegającej licencjiGPL. Doprowadziło to do zainicjowania dwóch projektów alternatywnych dla Qt: Harmony iGNOME. Celem pierwszego z nich było stworzenie ekwiwalentu Qt podlegającego licencji GPL, celem drugiego – stworzenie realnej alternatywy dla KDE opartej wyłącznie na wolnym oprogramowaniu. Projekt Harmony został wstrzymany w 2000 r. wraz z udostępnieniem na licencji GPL środowiska Qt dla systemu Linux.
W 2000 Trolltech opublikował wersję Qt dla urządzeń wbudowanych –Qt/Embedded (przemianowaną później naQtopia Core iQt Extended).
W 2001, wraz z opublikowaniem Qt 3.0, rozszerzono zakres platform systemowych obsługiwanych przez Qt oMac OS X.
W 2005, wraz z opublikowaniem Qt 4.0, po raz pierwszy udostępniono wersję Qt dla wszystkich obsługiwanych systemów operacyjnych (w tym Windows) na licencji GPL. Dopiero ta decyzja wygasiła w środowisku wolnego oprogramowania próby stworzenia rozwiązań alternatywnych do Qt pod względem polityki licencyjnej (jednym z ostatnich poważnych projektów tego typu byłQ... Windows[4]).
W 2007 udostępniono wersję Qt dla językaJava (Qt Jambi).
W 2008 Trolltech został przejęty przez Nokię i zmienił nazwę na Qt Software, a od sierpnia 2009 naQt Development Frameworks. W styczniu 2009 złagodzono politykę licencyjną (stosowana od wersji Qt 4.5 opcjonalna licencjaLGPL praktycznie czyni z Qt bibliotekę darmową dla większości zastosowań komercyjnych).W tym samym roku całkowicie wstrzymano rozwój Qt Jambi[5] oraz zaprzestano rozwoju Qt Extended jako osobnej platformy, włączając część jej funkcji do głównej gałęzi Qt[6].
W 2010 Nokia zapowiedziała użycie Qt jako głównej platformy programistycznej w nadchodzącymSymbianie^4 oraz systemieMeeGo. Wydano testowe wersje API do urządzeń mobilnych – Qt Mobility (zastępujące Qt Extended).
W 2012 Digia kupiła od firmy Nokia framework Qt[7], zapewniając przy okazji dalsze wsparcie i rozwój darmowej licencji i współpracę z projektemKDE oraz KDE Free Qt Foundation na rzecz otwartego i wolnego oprogramowania[8].
Qt w wersji 4 jest niekompatybilna z poprzednimi wersjami Qt – zarówno na poziomie kodów źródłowych, jak i kodów wykonywalnych. W porównaniu z wersją Qt 3, wprowadzono do niej sześć nowych technologii:
Interview – Zestaw klas ułatwiających pisanie kodu zgodnie ze wzorcemmodel-widok-kontroler.
Arthur – Zestaw klas do grafiki dwuwymiarowej.
Scribe – Zestaw klas do pozycjonowania i wyświetlania tekstu.
MainWindow – Zestaw klas zawierających elementy niezbędne do tworzenia nowoczesnych okien głównych aplikacji (w tym aplikacji typuMDI) z menu, paskami narzędziowymi, skrótami klawiaturowymi, paskiem stanu itp.
Qt 4.1 (19 grudnia 2005). Wprowadzono m.in. obsługę formatów SVG (rysunki i animacje) i PDF (drukowanie) oraz umożliwiono stosowanie półprzezroczystych okien potomnych na wszystkich platformach.
Qt 4.2 (4 października 2006). Wprowadzono m.in. moduł Graphics View (definiujący scenę, na której można efektywnie wyświetlać i manipulować tysiącami własnych obiektów graficznych), umożliwiono kontrolowanie wyglądu widgetów przy pomocy arkuszy stylów (wzorowanych naCSS), wprowadzono ułatwienia przy implementacji operacjiundo („cofnij”) i uzupełniania kodu (code completion).
Qt 4.3 (30 maja 2007). Zwiększono zgodność z systemem Vista, ulepszono obsługę standardów OpenGL (uwzględnienie nowych możliwości nowoczesnych kart graficznych) i SVG, włączono modułQtScript(inne języki) obsługujący język skryptowy zgodny ze standardemECMAScript, wprowadzono obsługę protokołówSSL iHTTPS.
Qt 4.4 (6 maja 2008). Integracja z silnikiemWebKit (przeglądarka WWW), integracja z bibliotekąPhonon (multimedia), obsługa platformyWindows CE, obsługa standarduXQuery 1.0 iXPath 2.0 (język XML), nowy, uproszczony moduł dla aplikacjiwielowątkowych, zmodyfikowany system pomocy, integracja standardowych widżetów z modułem Graphics View.
Qt 4.5 (3 marca 2009). Zwiększona wydajność biblioteki, obsługa programów hybrydowych (łączenie aplikacji webowych z kodem natywnym), obsługa 64-bitowej platformy Mac. Do standardowej dystrybucji włączono wieloplatformowe zintegrowane środowisko programistyczneQt Creator. Udostępniono Qt SDK zawierający pełną wersję biblioteki wraz z wszystkimi narzędziami deweloperskimi
Qt 4.6 (1 grudnia 2009). Nowe API: animacje, gesty, wielodotyk; wstępne wsparcie Symbiana, Windowsa 7 oraz Mac OS X 10.6; poprawki wydajności.
Qt 4.7 (21 września 2010). Qt Quick – platforma tworzenia UI.
Qt 4.8 (15 grudnia 2011). Qt Platform Abstraction (warstwa ułatwiająca przenoszenie aplikacji na różne platformy) wsparcie dla wielowątkowego wykorzystania biblioteki OpenGL oraz dostępu HTTP, optymalizacja systemu dostępu do plików.
Jest ona w znacznym stopniu zgodna z Qt 4 na poziomie kodu źródłowego, ale niezgodna na poziomie kodów wykonywalnych, więc oprogramowanie wymaga ponownej kompilacji.
↑RotemR.ShneorRotemR.,Handbook of Research on Born Globals, Chapter 10: Born Global Firms, Internet, and New Forms of Internationalization., 2012,ISBN 978-0-85793-804-6. Brak numerów stron w książce