Qt (kehitysympäristö)

alustariippumaton ohjelmistojen ja graafisten käyttöliittymien 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 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.6 ()[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-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).

HistoriaMuokkaa

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.

YritysMuokkaa

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]

TekniikkaMuokkaa

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]

AlustatMuokkaa

Qt on julkaistu seuraaville alustoille:

ModuulitMuokkaa

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ösMuokkaa

LähteetMuokkaa

  1. Qt 5.13.2 Released, (viitattu ). Arvo on haettu Wikidatasta.
  2. https://www.qt.io/blog/qt-5.12.6-released. 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 muuallaMuokkaa