[ohjeita|https://wiki.metropolia.fi/display/koneautomaatio/Dialogin+wizardin+arvon+luku+muuttujaan]
# Tee Radio button valikko kolmella painikkeella dialogiin. Lisää teksiruutu, jossa kerrot mitä painikkeista on painettu.
# Tee ohjelmallisesti dialogi, jossa on oikealla plus-, miinus-, kerto\- ja jakopainikkeet. Vasemmalla on kolme teksti-ikkunaa, kahden ylimmän ruudun tulos laitetaan alimpaan ruutuun riippuen painettavasta napista. Lisää tekstikenttiin validaattorit, ettei numerokenttiin voi syöttää kirjaimia kts. mallia esimerkistä [double validator].
# Tee dialogi, jossa on progress bar, joka etenee ajastimen tahdissa. Progress barin voi käynnistää, nollata ja pysäyttää painikkeilla. Laita ajastimen jaksoajaksi 0,5 sekuntia. Näytä arvo myös "lcd"-näytöllä.
# Tee graafisella editorilla dialogi, johon sijoitat kuusi haluamaasi widgettiä ja erottele rinnakkaiset widgetit spacerilla toisistaan. Ryhmittele widgetit kolmeen allekkaiseen ryhmään kolmella horisonttaalisella layoutilla.
# Jatka edellistä tehtävää siten, että teet groupboxin rinnakkaisten widgettien ympärille ja ylimmän ryhmän napilla kätket alemmat widget-ryhmät. Kokeile sizehint käskyä muotoillaksesi dialogia oikean kokoiseksi.
# Tee [dialogi |https://wiki.metropolia.fi/display/koneautomaatio/Dialogin+toteutus+ohjelmallisesti+ilman+Qt+Designeria] graaffisella editorilla.
# Tee dialogi esimerkki, jossa [pino|https://wiki.metropolia.fi/display/koneautomaatio/Luokkamallit] on aliluokkana. Tee nappula "Laita pinoon" ja "Ota pinosta".
# Tee edellinen esimerkki QStack template luokkaa käyttäen.
# Tee dialogi, jolla voit laittaa ja katsella lukuja vektorissa, käytä QVector objektia.
# Tee dialogi, jolla voit laittaa ja katsella lukuja vektorissa, käytä QList objektia.
# Tutustu Kvaserin simplewrite.c ohjelmaan ja liitä se Qt\- dialogiin siten, että voit syöttää ohjelman tiedot dialogsta.
# Tutustu Kvaserin canmonitor.c ohjelmaan ja liitä se Qt\- dialogiin siten, että voit syöttää ohjelman tiedot dialogsta.
# Tutustu Qwt esimerkkeihin ja tee kolmannen esimerkin pohjalta ohjelma, joka piirtää plot-ikkunaan cosini-käyrää.
# Tee sql esimerkin avulla projektitietokanta, jossa on sarakkeet ProjektinNimi, AloitusPvm, Projektipaallikko, Budjetti.
# Ota paluuarvot talteen edellisen tehtävän sql-kyselyistä ja näytä virheet QMessageBoxilla. Käyttäjätunnus root ja salasana huhtikuu.
# Asenna tietokooneeseen MySql palvelin ja core.
# Asenna MySql Administrator, Query Browser ja Worbench
# Tee tehtävän 18. taulu MySql-tietokantaan.
# Suunnittele luokkamalli koneelle. Luokka Kone koostuu luokista Toimilaite ja Prosessi. Toimilaite koostaa luokan Liikeanturi ja VoimaAnturi. Nämä luokat taas perivät luokan Anturi. Tee luokista ensin UML-malli Dia:lla ja sitten Qt:llä.
# Muokkaa mallia siten, että teet luokan dialogi ja laitat sen jäseneksi luokan Kone. Periytä Kone luokasta QThread.
# Korjaa Dialla tekemä malli edellisen tehtävän mukaiseksi.
# Lisää anturille jäsenet double vahvistus, double offset, double tulo, double tuloSiYksikkona, double taarattuTuloSiYksikkona, double KeskiarvoistusVektori\[10\], i , int paikkaVektorissa, double Summa
# Tee käyttöliittymään nappi MittaaTulo ja sille Dialog luokkaan slot Mittaa. Laita myös LineEdit tai lcd, josta voit lukea mitatun arvon.
# Tee Dialog luokkaan signaali MittaaTulonArvo.
# Tee luokkaan Anturi slot void PaivitaTulo();
# Yhdistä signaali MittaaTulonArvo slotiin PaivitaTulo.
# Emitoi (lähetä) signaali MittaaTulonArvo käyttöliittymän slotissa Mittaa.
# Tee luokkaan Anturi signaali LahetaMitattuArvo(double) ja ota se vastaan käyttöliittymässä.
|| ui || Dialog || || Anturi ||
| MittaaTulo-> \\ | \->Mittaa | | |
| | MittaaTulonArvo-> | | \->PaivitaTulo |
| | ArvonNaytto<\- \\ | | <\- LahetaMitattuArvo(double) |
# Laita jokin arvo emitoimaasi signaaliin LahetaMitattuArvo(double) ja testaa, että arvo tulee näytölle.
# Tee käyttöliittymään Horizontal Slider ja välitä se signaali - slot mekanismilla Anturi\- luokan muuttujaan tulo.
# Tee Anturi-luokkaan funktio Paivita. Kutsu tätä edellisessä tehtävässä tekemästäsi slotista.
# Laita Paivita - funktion sisällöksi tuloSiYksikkona=tulo*vahvistu+offset;
# Testaa, että vahvistettu tulo tulee näytölle.
# Tee Umbrello \-ohjelmalla UML-malli tähän asti tekemästäsi softasta.
# Tässä tehtävässä toteutamme asynkronisen säikeen, joka lukee anturia ja lähettää signaalilla tiedon käyttöliittymälle. Tee Kone luokkaan run-funktio ja siihen forever toistorakenne. Katso mallia [säikeistetystä ohjelmasta.|http://wiki.metropolia.fi/pages/viewpage.action?pageId=14687120]| //tämä luokan esittelyyn |
| QTime displayUpdateTimer; |
| forever |
| { |
| //Tähän anturin tiedon laskenta |
| if (NayttoAjastin.elapsed() > Paivitysaika) |
| { |
| Nayttoajastin.restart(); |
| emit LahetaAnturinTiedot(Arvo); |
| } |
| } |
# Tee esimerkki [Qwt plot|display/koneautomaatio/QwtPlot+-+esimerkki] esimerkki.
# Hyödynnä esimerkkiä ja tulosta anturin arvo qwtplotissa.
# Päivitä edellisiä tehtäviä kuvaava Umbrello malli.
# Tee kone esimerkki siten, että teet kaikista luokista dialogeja. Laita luokkiin toimilaite ja anturi liukupalkit, joilla voit säätää niiden antamia arvoja. Älä käytä enää QThread luokkaa kone luokan perinnässä.
# Tee dialog perustainen ohjelma ja koosta se kahdesta alidialogista. Kokeile dialogien avausta show ja exec funktioilla, mitä huomaat? Ohjeita: sisällytä "include" alidialogit päädialogin otsikkotiedostoon, tee dialogeille muuttujat päädialogiin, tee päädialogiin nappi, jolla avaat alidialogit funktioilla exec tai show.
# Lisää edellisen tehtävän dilogeihin viestinvälitystä. Lähetä viesti päädialogista molempiin alidialogeihin. Esimerkiksi niin, että teet dialogiin napin, joka lähettää editline viestin molemmille alidialogeille.
# Lisää alidialogeihin viestinvälitys toiseen alidialogiin edellisessä tehtävässä kuvatulla tavalla.
# Lisää vielä alidialogeihin vistinvälitys päädialogiin.
# Tutustu Kvaserin simplewrite.c ohjelmaan ja liitä se Qt\- dialogiin siten, että voit syöttää ohjelman tiedot dialogista.
# Tutustu Kvaserin canmonitor.c ohjelmaan ja liitä se Qt\- dialogiin siten, että voit syöttää ohjelman tiedot dialogista.
# Tee ohjaus manipulaattorille, joka nostaa laatikon pöydältä ja laittaa sen toiselle pöydälle. Käytä QStateMachine luokkaa ja sen aliluokkia.
# Tee edellinen tehtävä käyttäen switch-case rakennetta ja QTimer ajastinta. Kts. Qt:n wiki.
# Tee edellinen tehtävä käyttäen tilakoneessa omaa Säiettä QThread.
# |