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 | |
---|---|
Qt Designer -työkalu käyttöliittymien suunnittelua varten |
|
Kehittäjä |
Qt Group Qt Project |
Kehityshistoria | |
Vakaa versio | 6.4.2 ()[1] |
Tiedot | |
Ohjelmistotyyppi | käyttöliittymäkirjasto, ohjelmointiympäristö |
Alusta | Android, Linux, iOS, OS X, QNX, Windows |
Lisenssi | GPL, LGPL, kaupallinen |
Aiheesta muualla | |
www.qt.io | |
Versiohallinta |
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.[2][3] 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.[4] qmake-käännös on vielä tuettu Qt:ta käyttäville sovelluksille.[4]
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.[5] [6] Digia eriytti Qt-liiketoiminnan kokonaan omistamaansa Qt Company tytäryhtiöön.
Qt Company on kertonut vuonna 2019 mikrokontrollereille suunnatusta Qt-versiosta.[7]
Tekniikka
Qt-kirjaston oliot välittävät tietoa toisilleen signaaleilla ja lovilla (engl. signals and slots).[8] Ratkaisu on ollut käytössä toteutuksen ensijulkaisusta lähtien vuonna 1994.[9] Menetelmän tavoite on korjata kaksi callback-funktioiden heikkoutta: parantamalla tyyppiturvallisuutta ja vähentää riippuuvuutta tiedosta mitä callback-funktiota käsittelijän on kutsuttava.[8] Tekniikka toteuttaa havainnoitsija-suunnittelumallin. Vastaava toteutus on myös muun muassa Boost-kirjastossa.[9]
Qt:ssa luokka voi toteuttaa yhden tai useampia signaaleja ja yhden tai useampia lovia.[10] Signaalit voidaan kytkeä mihin tahansa haluttuun määrään lovia connect()
-funktiolla.[10] Lovi on kuin mikä tahansa luokan jäsenmetodi ja sitä voidaan kutsua suoraan, mutta se on määriteltävä loveksi avainsanalla.[10]
Signaalilla ei ole omaa toteutusta.[10] Signaalin lähettämistä kutsutaan emittoimiseksi (engl. emit).[10]
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 Embedded Linux – sulautetut Linux-pohjaiset käyttöjärjestelmät (kämmentietokoneet, älypuhelimet jne.)
- Qt for Windows – Microsoft Windows
- Qt for Windows CE – Microsoft Windows CE
Wayland-järjestelmää tuetaan vaihtoehtona X Window Systemille.[11]
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.
Lähteet
- Qt 6.4.2 Released, (viitattu ). Tieto on haettu Wikidatasta.
- Happy 20th Anniversary Qt! blog.qt.io.
- 20 Years of Qt Code - On 20th May 1995, Qt had its 1st public release ever. qt.io.
- Lars Knoll: Qt 6.0 Released qt.io. 8.12.2020. Viitattu 8.12.2020. (englanniksi)
- Digia ostaa koko Qt-kehitysympäristön Nokialta 9.8.2012. ePressi.com. Viitattu 9.8.2012.
- Digia ostaa koko Qt-kehitysympäristön Nokialta 9.8.2012. Digia. Arkistoitu 23.10.2012. Viitattu 9.8.2012.
- Michael Larabel: The Qt Company Is Now Working On Qt For Microcontrollers 22.8.2019. Phoronix. Viitattu 23.8.2019. (englanniksi)
- Signals & Slots doc.qt.io. Viitattu 24.9.2019. (englanniksi)
- Scott Collins: A Deeper Look at Signals and Slots (PDF) elpauer.org. 19.12.2005. Viitattu 24.9.2019. (englanniksi)
- Sarah Thompson: sigslot - C++ Signal/Slot Library sigslot.sourceforge.net. Viitattu 24.9.2019. (englanniksi)
- Wayland and Qt doc.qt.io. Viitattu 14.12.2022. (englanniksi)
Aiheesta muualla
- Qt (Arkistoitu – Internet Archive)
- Qt Commercial
- Qt:n dokumentaatio (Arkistoitu – Internet Archive)
- Digitoday: Nokia hakee vauhtia ohjelmistoihin Linux-yhtiöstä