Qt (kehitysympäristö)

Wikipediasta
Siirry navigaatioon Siirry hakuun
Qt
Qt logo 2016.svg
Qt Designer -työkalu käyttöliittymien suunnittelua varten
Qt Designer -työkalu käyttöliittymien suunnittelua varten
Kehittäjä Qt Group
Qt Project
Kehityshistoria
Vakaa versio 5.13.2 ()[1] ja 5.12.3 ()[2]
Tiedot
Ohjelmistotyyppi käyttöliittymäkirjasto, ohjelmointiympäristö
Alusta Android, Linux, iOS, OS X, QNX, Windows, X11
Lisenssi GPL, LGPL, kaupallinen
Aiheesta muualla
www.qt.io

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 LGPL- 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[muokkaa | muokkaa wikitekstiä]

Qt:n ensimmäinen julkinen versio 0.90 julkaistiin 20. toukokuuta 1995.[3][4] 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.

Yritys[muokkaa | muokkaa wikitekstiä]

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[muokkaa | muokkaa wikitekstiä]

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[muokkaa | muokkaa wikitekstiä]

Qt on julkaistu seuraaville alustoille:

Moduulit[muokkaa | muokkaa wikitekstiä]

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[muokkaa | muokkaa wikitekstiä]

Lähteet[muokkaa | muokkaa wikitekstiä]

  1. Qt 5.13.2 Released, (viitattu ). Arvo on haettu Wikidatasta.
  2. (en) Qt 5.12.3 Released, (viitattu ). Arvo on haettu Wikidatasta.
  3. Happy 20th Anniversary Qt! blog.qt.io.
  4. 20 Years of Qt Code - On 20th May 1995, Qt had its 1st public release ever. qt.io.
  5. Digia ostaa koko Qt-kehitysympäristön Nokialta 9.8.2012. ePressi.com. Viitattu 9.8.2012.
  6. Digia ostaa koko Qt-kehitysympäristön Nokialta 9.8.2012. Digia. Viitattu 9.8.2012.
  7. Michael Larabel: The Qt Company Is Now Working On Qt For Microcontrollers 22.8.2019. Phoronix. Viitattu 23.8.2019. (englanniksi)
  8. a b Signals & Slots doc.qt.io. Viitattu 24.9.2019. (englanniksi)
  9. a b Scott Collins: A Deeper Look at Signals and Slots (PDF) elpauer.org. 19.12.2005. Viitattu 24.9.2019. (englanniksi)
  10. a b c d e Sarah Thompson: sigslot - C++ Signal/Slot Library sigslot.sourceforge.net. Viitattu 24.9.2019. (englanniksi)

Aiheesta muualla[muokkaa | muokkaa wikitekstiä]