...
- Tee Qt Creator ohjelmalla dialogi-sovellus. Laita dialogiin liukupalkki ja "lcd"-näyttö QLCDNumber. Johda liukupalkin signaali (valueChanged) "lcd"-näytön slotiin (display) signal-slot tilassa (F4). Tee graafisella editorilla kytkennät "widgettien" välille. Testaa sovellus.
- Tee edellinen tehtävä connect-funktion avulla eli lisää Dialogin muodostimeen connect.... Alla esimerkki connect-funktion käytöstä:
Code Block Dialogi::Dialogi(QWidget *parent) : QDialog(parent), ui(new Ui::Dialogi) { ui->setupUi(this); //yhdistetaan signaalit ja slotit, valitse komponentit valikosta ALÄ KOPIOI ettei mene suteen connect(ui->horizontalSlider,SIGNAL(valueChanged(int)),ui->lcd,SLOT(display(int))); ....
- Laita graafisessa editorissa edellisen liukupalkin alarajaksi -100 ja ylärajaksi 100. Testaa.
- Vie liukupalkin arvo edistymispalkin " QProgressBar " arvoksi. Tee kytkentä graafisella editorilla.
- Tee edellinen tehtävä connect-funktiolla.
- Tässä tehtävässä viet haluamasi tekstin labeliin eli tekstinäyttöön ruudulla, kun painat dialogissa olevaa nappulaa. Eli tee dialogi, johon luot graafisessa editorissa painonapin ja labelin. Nimeä nappi ja label siten, että muistat niiden merkityksen. Tee lisäksi painonapille slot siirtämällä hiiren kursori napin päälle ja painamalla hiiren oikeaa painiketta ja sieltä valinta: go to slotLisäksislot . Tee .h-tiedostoon oma slot . seuraavasti eli avaa Dialog.h ja aaltosulkeiden sisälle ennen lopettavaa sulkua lisää alla oleva teksti.
Tee slotin toteutus tiedostoon Dialog.cpp. Lisää tiedoston loppuun funktio, joka näyttää tekstin label ruudulla näytössäruudulla.Code Block ... public slots: void nayta(); ...
Liitä napin signaali omaan slotiisi. Tee tämä dialogin muodostimessa (slot on nyt Dialogissa).Code Block ......//tämän lisäät Dialog.cpp tiedoston loppuun void Dialog::nayta() { //laita ui-> jos olet tehnyt labelin dialogiin QString Tekstia;//tämä on muuttuja joka tallettaa merkkijonoja Tekstia="juttuja"; ui->label->setText(Tekstia);//tällä laitat tekstin labeliin }
Code Block ui->setupUi(this);//tämä on jo tullut automaattisesti //yhdistetaan signaalit ja slotit, valitse komponentit valikosta ALÄ KOPIOI ettei mene suteen connect(ui->Nappi,SIGNAL(clicked()),this,SLOT(Nayta()));
- Tee QTimer-luokan avulla sekuntikello, jonka tarkkuus on yksi sekunti. Laita dialogiin painikkeet start, pause, stop ja nollaus. Tee painikkeille slotit sekä vielä lcd-näyttö kellon arvoa varten. Tee QTimer timer; muuttuja Dialog.h tiedostoon.
...
*********2. sarja tehtäviä *************
- 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.
Wiki Markup 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.\
Code Block //tämä luokan esittelyyn QTime displayUpdateTimer;
Code Block forever { //Tähän anturin tiedon laskenta if (NayttoAjastin.elapsed() > Paivitysaika) { Nayttoajastin.restart(); emit LahetaAnturinTiedot(Arvo); } }
- Hae koneen arvot Sqlite tietokannasta esimerkin mukaisesti.
- Tee Qwt plot 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.
- 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.
- Asenna koneeseesi Synapticin avulla Sliteman Sqlite tietokanta editori.
- Tee tietokantataulu Sliteman ohjelmalla Sylinteri, jossa on kentät id, nimi, isku, vahvistus ja tulosta taulun asetukset tekstitiedostoon.
- Kokeile tehdä samainen taulu seuraavalla sql-komennolla:
...