Qt (kehitysympäristö)

Qt (lausutaan virallisesti kuten englannin kielen sana "cute") on alustariippumaton ohjelmistojen ja graafisten käyttöliittymien käyttöliittymäkirjasto ja ohjelmointiympäristö. Qt sisältää muiden muassa C++ -luokkakirjaston, omaa QML-kieltä käyttävän QtQuick-kirjaston ja alustariippumattoman ohjelmointiympäristön. Qt-ympäristöä käytetään myös tekstipohjaisten sekä palvelinohjelmistojen kehittämiseen.

Qt-ympäristö on vapaa ja avoimen lähdekoodin ohjelmisto ja se on saatavilla GPL- ja LGPL-lisensseillä sekä kaupallisella lisenssillä.

Qt:n tuotemerkin ja tekijänoikeudet omistaa Qt Group. Qt-ympäristöä kehittää Qt Groupin lisäksi Qt Project, joka on avoin joukko yksilöitä ja yrityksiä.

Huomattavia Qt:n avulla kehitettyjä ohjelmistoja ovat KDE-graafinen käyttöliittymä ja siihen liittyvät muut ohjelmistot, Google Earth, Skype, VirtualBox ja VLC media player.

Qt-kirjastossa on sisäänrakennettu tuki C++-ohjelmointikielelle, mutta Qt:iä voidaan käyttää myös muilla kielillä kuten esimerkiksi C# (Qyoto -kirjaston avulla), Java (Qt Jambi), Python (PyQt, PySide, PythonQt), Ruby (QtRuby) ja PHP (PHP-Qt).

Historia
Qt:n ensimmäinen julkinen versio 0.90 julkaistiin 20. toukokuuta 1995. Alusta alkaen Qt on julkaistu sekä avoimella että kaupallisella lisenssillä.

Qt valittiin julkaisunsa aikaan 1996, tuolloin vain Linux-käyttöjärjestelmälle tarkoitetun KDE-työpöytäympäristön kehitysympäristöksi. Qt oli tuolloin saatavilla vapaasti vain "ei-kaupalliseen käyttöön", mikä sai GNU-projektin aloittamaan KDE:n kanssa kilpailevan GNOME-projektin. Qt julkaistiin myöhemmin vapaan lähdekoodin kriteerit täyttävällä GPL-lisenssilla ja maaliskuussa 2009 LGPL:llä, joten sitä voi käyttää vapaasti myös kaupallisissa ohjelmissa.

Vuonna 2020 julkaistu Qt 6 vaatii C++17-yhteensopivan kääntäjän ja on siirtynyt CMake-käännösympäristöön. qmake-käännös on vielä tuettu Qt:ta käyttäville sovelluksille.

Yritys 
Qt:n alkuperäinen kehittäjä oli norjalainen Trolltech, jonka Nokia osti vuonna 2008. Maaliskuussa 2011 Ohjelmistoyhtiö Digia osti Nokialta Qt:n lisensointi- ja palveluliiketoiminnan. Nokia jatkoi Qt-teknologian kehittämistä, mutta Digia vastaa teknologian kaupallisesta lisensoinnista ja palveluliiketoiminnasta. Elokuussa 2012 julkistettiin, että Digia ostaa koko Qt-kehitysympäristön Nokialta. Kaupan myötä Digia vastasi kaikista Qt-teknologiaan liittyvistä toiminnoista, joista aiemmin on huolehtinut Nokia. Näitä ovat muun muassa tuotekehitys, sekä kaupallisen ja avoimen lähdekoodin lisensointi- ja palveluliiketoiminta, jonka Digia osti jo aikaisemmin maaliskuussa 2011. Kaupan merkittävimpänä tavoitteena on parantaa Digian asemaa Qt-ekosysteemissä ja laajentaa Qt-teknologian saatavuutta yhä useammalle alustalle.  Digia eriytti Qt-liiketoiminnan kokonaan omistamaansa Qt Company tytäryhtiöön.

Qt Company on kertonut vuonna 2019 mikrokontrollereille suunnatusta Qt-versiosta.

Tekniikka 
Qt-kirjaston oliot välittävät tietoa toisilleen signaaleilla ja lovilla (). Ratkaisu on ollut käytössä toteutuksen ensijulkaisusta lähtien vuonna 1994. Menetelmän tavoite on korjata kaksi callback-funktioiden heikkoutta: parantamalla tyyppiturvallisuutta ja vähentää riippuuvuutta tiedosta mitä callback-funktiota käsittelijän on kutsuttava. Tekniikka toteuttaa havainnoitsija-suunnittelumallin. Vastaava toteutus on myös muun muassa Boost-kirjastossa.

Qt:ssa luokka voi toteuttaa yhden tai useampia signaaleja ja yhden tai useampia lovia. Signaalit voidaan kytkeä mihin tahansa haluttuun määrään lovia connect()-funktiolla. Lovi on kuin mikä tahansa luokan jäsenmetodi ja sitä voidaan kutsua suoraan, mutta se on määriteltävä loveksi avainsanalla.
Signaalilla ei ole omaa toteutusta. Signaalin lähettämistä kutsutaan emittoimiseksi ().

Alustat 
Qt on julkaistu seuraaville alustoille:

 Qt for Linux/X11 – X Window System (Unix / Linux)
 Qt for Symbian – Symbian
 Qt for Maemo – Maemo
 Qt for Meego – Meego
 Qt for Mac OS X – Apple Mac OS X
 Qt for Windows – Microsoft Windows
 Qt for Embedded Linux – sulautetut Linux-pohjaiset käyttöjärjestelmät (kämmentietokoneet, älypuhelimet jne.)
 Qt for Windows CE – Microsoft Windows CE

Moduulit 
Qt-luokkakirjasto sisältää seuraavat moduulit:
 Qt Core Module – Qt:n perusluokat, IO, tapahtumien käsittely, säikeet, observer-suunnittelumallin toteutus, jne.
 GUI Module – graafiseen käyttöliittymään liittyvät luokat (Widgets)
 OpenGL Module – OpenGL-grafiikkaluokat
 Qt Script Module – tuki komentosarjakielille
 Networking Module – tietoverkkoihin liittyvät ohjelmointiluokat (TCP, HTTP, FTP, DNS jne.)
 Database Module – tietokantaluokat (SQL, ODBC, DB2 jne.)
 Qt WebKit Integration – tuki WWW-sivujen näyttämiseen
 Phonon Multimedia Framework – ääni- ja kuvatiedostojen mediasoitin
 XML Module – XML-kirjasto (SAX ja DOM)
 Unit Testing Framework – yksikkötestausjärjestelmä

Lisäksi Qt-ympäristö sisältää erilaisia ohjelmointiin sekä kansainvälistämiseen ja lokalisointiin tarkoitettuja työkaluja.

Katso myös 
 GTK
 Motif

Lähteet

Aiheesta muualla 

 Qt 
 Qt Commercial
 Qt:n dokumentaatio 
 Digitoday: Nokia hakee vauhtia ohjelmistoihin Linux-yhtiöstä

Ohjelmointiympäristöt
Käyttöliittymäkirjastot
Vapaat ohjelmistot
Seulonnan keskeiset artikkelit