(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.

../../_images/timer.png

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.