Qt-ohjelmointi
Mikä on Qt?

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 Widget / Qt Quick

Qt:ssa on kaksi mahdollisuutta käyttöliittymän luomiseen:

  • Qt Widget on "perinteinen" tapa luoda työpöytäsovelluksia. Nämä sovellukset eivät skaalaudu kovin joustavasti eri kokoisille näytöille.
  • Qt Quick sovelluksissa käyttöliittymä luodaan QML-kielellä. Nämä käyttöliittymät skaalautuvat eri kokoisille näytöille ja sopivat hyvin esim. mobiililaitteille.

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

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ä:

  • CTRL + /: Valitun lohkon kommentointi/kommentoinnin kumoaminen
  • CTRL + F: Etsi ja korvaa
  • CTRL + ALT + Down: Monista rivi

Qt-asennus

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.

Signal/Slot

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.

Parent-Child

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.



Toggle Menu