Qt on alustariippumaton ohjelmistojen ja graafisten käyttöliittymien käyttöliittymäkirjasto ja ohjelmointiympäristö. Qt on alunperin norjalaisen Trolltechin tekemä käyttöliittymien ja ohjelmakoodin toteutukseen tarkoitettu työkalu. Qt:stä on ladattavissa sekä maksullinen, että ilmainen versio (LGPL versio). Molemmat voi ladata osoitteesta https://www.qt.io/download
Tämän oppaan tarkoitus on esittää HTTP-protokollan käyttö Qt-sovelluksissa. Jos Qt ohjelmointi ei ole tuttua, kannattaa aluksi tehdä sivustolla mainitut harjoitukset. Harjoitusten koodit löytyvät osoitteesta https://github.com/alaluuk/qt_tutorial.
Qt:ssa on kaksi mahdollisuutta käyttöliittymän luomiseen:
Qt Widget sovelluksissa toteutus kirjoitetaan C++ kielellä. Qt Quick sovellusten toteutukset voidaan kirjoittaa käyttäen C++:aa ja/tai JavaScriptiä.
Tämän oppaan esimerkeissä keskitytään Qt Widget sovellusten tekoon.
Qt Creator on ns. IDE (Integrated Development Environment) eli integroitu kehitysympäristö. Koodin kirjoittamista nopeuttaa, kun opettelee käyttämään editorin pikanäppäimia (quick keys). Alla muutamia hyödyllisimpiä:
Qt:n asennusohjeet löytyvät sivulta https://peatutor.com/c_kieli/qt_asennus.php
Jotta gitin käyttö ryhmässä sujuisi helpommin, kannattaa määrittää build-kansio ohjeessa https://peatutor.com/c_kieli/qt_asennus.php#build annetun mallin mukaisesti.
Kun build kansio määritellään edellisen ohjeen mukaan, Qt-Creator luo projektikansion alle kansion build, joka on kannattaa kirjoittaa .gitignore tiedostoon.
Signaalien ja Slottien avulla oliot voivat kommunikoida keskenään. QObject-luokan connect-funktiolla ensimmäisen olion signaali-funktio voidaan kytkeä toisen olion slot-funktioon.
Signal/Slot on ns. Observer design patternin mukainen toteutus.
Vaikket itse kirjoittaisikaan sovellukseesi signal- ja slot-funktioita, tulet varmaan käyttämään niitä. Esimerkiksi, kun lisäät sovellukseesi Buttonin ja sen klikkaukselle jonkin toiminnan, käytät signal-slot systeemiä. Kun buttonia klikataan kutsutaan signal-funktiota ja tämä funktio connectoidaan slot-funktioon, jossa määritetään mitä buttonin painallus saa aikaan.
Qt tarjoaa tehokkaan ja helpon tavan hallita olioiden elinkaarta. Systeemi toimii niin, että kun olion parent tuhotaan, myös sen lapsi oliot tuhotaan automaattisesti.
Esimerkiksi sovelluksessa on ikkunat Mainwindow ja LoginForm. MainWindow:sa on painike, jolla avataan LoginForm. Painikkeen clicked tapahtumaan on kirjoitettu koodi:
LoginForm *objectLoginForm = new LoginForm(this); objectLoginForm -> show();Edellä this-osoittimella asetetaan LoginFormin parentiksi MainWindows, jolloin objectLoginForm olion tuhoamisesta ei tarvitse itse huolehtia.