You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 64 Next »

Harjoitustehtävät Qt:n ja C++:n oppimiseen. Jokainen tehtävä on 2 pisteen arvoinen. Näytä opettajalle tekemäsi tehtävä, niin saat pisteet kotiin. Pisteet lisätään saamiisi kokeen pisteisiin. Kurssin kokonaispistemäärä on noin 100 ja sillä saa vitosen. Noin 50 pisteellä saa ykkösen.

  1. 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.
  2. Tee edellinen tehtävä connect-funktion avulla eli lisää Dialogin muodostimeen connect.... Alla esimerkki connect-funktion käytöstä:
        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)));
          ....
    
  3. Laita graafisessa editorissa edellisen liukupalkin alarajaksi -100 ja ylärajaksi 100. Testaa.
  4. Vie liukupalkin arvo edistymispalkin " QProgressBar " arvoksi. Tee kytkentä graafisella editorilla.
  5. Tee edellinen tehtävä connect-funktiolla.
  6. Tee dialogi, johon luot painonapin ja labelin. Lisäksi tee .h-tiedostoon oma slot. Esim:
    ...
    public slots:
        void nayta();
    ...
    
    Slotin toteutuksessa (.cpp) muuta tekstikentän tekstiä. Esim:
    ...
    void Dialog::nayta()
    {
        label.setText("tähän jotain tekstiä");
    }
    ...
    
    Liitä napin signaali omaan slotiisi (slot on nyt Dialogissa).
  7. Tee QTimer-luokan avulla sekuntikello, jonka tarkkuus on yksi sekunti. Laita dialogiin painikkeet start, pause, stop ja nollaus. Tee QTimer timer; muuttuja Dialog.h tiedostoon. Nyt timer on muuttuja, joka sisältää ajastimen. Esimerkiksi timer.start(1000) käynnistää ajastimen yhden sekunnin resoluutiolla. QTimer ajastimen resoluutio on 1ms. Eli jos haluat resoluutioksi esimerkiksi 10 ms, täytyy start funktioon laittaa parametriksi 10.
  8. Muuta edellisen tehtävän kelloa siten, että tarkkuus on 0.01 sekuntia.
  9. Muuta edellistä tehtävää siten, että voit muuttaa tarkkuutta vaikka spinBox "widgetillä".
    void Dialog::on_StartTimer_clicked()
    {
        int aika= ui->spinBox->value();
        timer.start(aika);
        laskuri=0;
    }
    
  10. Tee ohjelma, joka sisältää painonapin "PushButton" ja viesti-ikkunan "MessageBox". Kun painetaan nappia, ohjelma näyttää viestiruudulla "MessageBox" viestin "nappia painettu".
  11. Vie edellisen tehtävän teksti QLabel ikkunaan.
  12. Vie edellisen tehtävän teksti QLineEdit ikkunaan
  13. Tutustu Qt:n QDebug luokkaan ja tulosta sen avulla edellisen tehtävän teksti komentoikkunaan.
  14. Tee ohjelma, joka ilmoittaa millä välillä annettu luku on. Laita annettu arvo lineEdit "ikkunaan" ja nappia "pushButton" painettaessa testaa if-lauseella arvoalue. Aseta "RadioButton"in  (yhden kolmesta) arvo osoittamaan arvoväliä 0...10, 11...100 tai >100.
  15. Vie liukupalkin data muuttujaan ja testaa debugerilla ja breakpointin avulla, että siirto onnistui. ohjeita
  16. Tee Radio button valikko kolmella painikkeella dialogiin. Lisää teksiruutu, jossa kerrot mitä painikkeista on painettu.
  17. 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.
  18. Lisää edelliseen tehtävään validaattorit, ettei numerokenttiin voi syöttää kirjaimia double validator ja etteivät kentät ole tyhjiä.
  19. 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ä.
  20. Tee graafisella editorilla dialogi, johon sijoitat kuusi haluamaasi widgettiä ja erottele rinnakkaiset widgetit spacerilla toisistaan. Ryhmittele widgetit kolmeen allekkaiseen ryhmään kolmella horisonttaalisella layoutilla.
  21. 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.
  22. Tee dialogi graaffisella editorilla.
  23. Tee dialogi esimerkki, jossa pino on aliluokkana. Tee nappula "Laita pinoon" ja "Ota pinosta".
  24. Tee edellinen esimerkki QStack template luokkaa käyttäen.
  25. Tee dialogi, jolla voit laittaa ja katsella lukuja vektorissa, käytä QVector objektia.
  26. Tee dialogi, jolla voit laittaa ja katsella lukuja vektorissa, käytä QList objektia.
  27. Tutustu Kvaserin simplewrite.c ohjelmaan ja liitä se Qt- dialogiin siten, että voit syöttää ohjelman tiedot dialogsta.  
  28. Tutustu Kvaserin canmonitor.c ohjelmaan ja liitä se Qt- dialogiin siten, että voit syöttää ohjelman tiedot dialogsta.
  29. Tutustu Qwt esimerkkeihin ja tee kolmannen esimerkin pohjalta ohjelma, joka piirtää plot-ikkunaan cosini-käyrää. 
  30. Tee sql esimerkin avulla projektitietokanta, jossa on sarakkeet ProjektinNimi, AloitusPvm, Projektipaallikko, Budjetti.
  31. Ota paluuarvot talteen edellisen tehtävän sql-kyselyistä ja näytä virheet QMessageBoxilla. Käyttäjätunnus root ja salasana huhtikuu.
  32. Asenna tietokooneeseen MySql palvelin ja core.
  33. Asenna MySql Administrator, Query Browser ja Worbench
  34. Tee tehtävän 18. taulu MySql-tietokantaan.
  • No labels
You must log in to comment.