(H) Ajastin¶
Tavoite:
Opin käyttämään QTimer
-olioita ja timeout
-signaaleja, joita
tarvitset seuraavan kierroksen GUI-projektissa
(jos toteutat lisäominaisuuksia).
Lisäksi harjoittelen taustavärin asettamista widgetille.
Ohjeita:
Hae koodipohja: templates/12/timer/
-> student/12/timer/
.
Tehtävänä on toteuttaa Qt Designerilla alla olevan kuvan mukainen dialogi.
Pohjakoodissa on valmiina osoitin QTimer
-olioon.
Verrattuna Find-dialogi -tehtävään tässä on vain yksi uusi käyttöliittymäkomponentti: LCD number. Lisäksi joudut etsimään Qt:n dokumentaatiosta, miten voit asettaa värejä käyttöliittymäkomponenteille. (Voit valita muitakin värejä kuin yllä olevassa kuvassa.)
Nappulat toimivat seuraavasti.
Start
-nappula käynnistää ajastimen. Se aloittaa ajan laskemisen niistä minuuteista ja sekunneista, jotka näytöllä sillä hetkellä ovat. (Jos ajastin on jo käynnissä, ei tee mitään.)Stop
-nappula pysäyttää ajastimen, jolloin näkyviin jää sen hetkiset minuutit ja sekunnit. (Jos ajastin on jo pysäytetty, ei tee mitään.)Reset
-nappula nollaa ajastimen asettamalla sekä minuutit että sekunnit nolliksi.Close
-nappula sulkee ikkunan.
Attention
Käytä seuraavia nimiä olioille: lcdNumberSec
, lcdNumberMin
,
startButton
, stopButton
, resetButton
ja closeButton
.
Samaan tapaan kuin Find-dialogi -tehtävässä, käytä signal & slot -mekanismia kytkemään nappuloille sopivat toiminnot.
Lisäksi tarvitset QTimer
-olion, joka voi lähettää timeout
-signaaleja
tietyin aikavälein.
Esimerkiksi jos aikaväliksi määritellään 1000 millisekuntia
(eli 1 sekunti), niin timeout
-signaali lähetetään sekunnin välein.
Kytke timeout
-signaali sitä käsittelevään slotiin ja kirjoita
sopiva käsittelykoodi.
Tämä kytkentä on pakko tehdä koodissa, sopiva paikka sille on
MainWindow
-luokan rakentaja.
Vinkkejä tehtävän tekemiseen:
- Kannattaa taas aloittaa rakentamalla käyttöliittymä.
- LCD number -komponentilla on metodi
display
, jota voit käyttää sekuntien ja minuuttien näyttämiseen. - Debug-tulosteita varten voit ottaa käyttöön kirjaston
QDebug
. - Taustavärin asettamiseen löytyy keinoja Qt:n dokumentaatiosta.
- Alusta minuutit ja sekunnit nolliksi.
A+ esittää tässä kohdassa tehtävän palautuslomakkeen.