Qt-ohjelmointi
Libraryn luominen, numeerisen tiedon lukeminen ja tulostaminen

Harjoituksessa tutkitaan kuinka library luodaan ja kuinka sitä käytetään sovelluksessa. Lisäksi tutkitaan kuinka LineEdit-kentästä luetaan arvo int-tyyppiseen muuttujaan ja tarkistetaan, että annettu arvo on kokonaisluku. Ja lisäksi kuinka int-muuttuja muokataan QStringiksi (jotta se voidaan tulostaa käyttöliittymään).

Librarylle käytetään Windowsissa tarkenninta dll ja Linuxissa tarkenninta so. Ne ovat valmiiksi käännettyjä kooditiedostoja, joita ei voidan kuitenkaan suorittaa, kuten exe-tiedostot. Libraryjä voidaan tehdä, kun halutaan jokin osa koodia itsenäiseksi kokonaisuudeksi. Samaa Libraryä voidaan hyödyntää myös useassa sovelluksessa.

LineEdit:stä luettu tieto on aina QString-tyyppiä, jos sitä halutaan käsitellä kokonaislukuna voidaan käyttää toInt-metodia seuraavasti:
int year=ui->lineEditYear->text().toInt(). Jos käyttäjä kuitenkin kirjoittaa tekstikenttään vahingossa kirjaimia, voi sovellus toimia virheellisesti. Esimerkissä esitetään kuinka tarkistetaan, että annettu tieto on kokonaisluku.

Labeliin kirjoitettava tieto on oltava QString-tyyppiä. Jos, tieto on kokonaisluku, se on muutettava Stringiksi tulostamista varten. Muunnos voidaan tehdä seuraavasti:
QString ageToPrint=QVariant(age).toString();, jossa siis age on kokonaisluku.

  1. Luo uusi projekti, jonka tyypiksi valitset C++ Library ja anna sen nimeksi myLibrary
  2. Avaa tiedosto mylibrary.h ja lisää luokan alkuun rivit
    private:
        int yearOfBirth;
    
  3. Lisää jäsenmuuttujalle Setter
  4. Lisää tiedostossa mylibrary.h public osaan seuraava rivi
    int getAge();
    
  5. Luo getAge metodille toteutus cpp tiedostossa seuraavalla koodilla
    int MyLibrary::getAge()
    {
        QDate currentDate = QDate::currentDate();
        int currentYear = currentDate.year();
        return currentYear - yearOfBirth;
    }
    
  6. Käännä projekti
  7. Voit sulkea projektin

  8. Luo uusi Qt Widget sovellus, jossa on kuva1:n mukainen ui
  9. Käännä projekti ja luo buttonille clicked-event
  10. Avaa projektitiedosto (pro-päätteinen tiedosto)
  11. Klikkaa projektitiedoston päällä hiiren oikeaa näppäintä ja valitse "Add Library" ja sitten "External Library"
  12. Klikkaa sitten Browse painiketta kohdassa Library File ja etsi kääntämäsi Libraryn build kansiosta tiedosto debug\libMyLibrary.a (Macissä tiedoston pääte on lib ja Linuxissa so) ja klikkaa Browse painiketta kohdassa Include path ja valitse kansio myLibrary.
    Poista ylimääräiset rastit kuten kuva2:ssa
  13. Avaa tiedosto mainwindow.h ja lisää sen alkuun rivi
    #include "mylibrary.h"
    
    Lisää mainwindow.h:n private osaan rivi
    MyLibrary *myObject;
    
  14. Lisää buttonin clicked-eventiin koodit
    myObject = new MyLibrary();
    bool ageNumberTest;
    int year=ui->lineEditYear->text().toInt(&ageNumberTest);
    if(!ageNumberTest){
        ui->labelResult->setText("Anna kokonaisluku!");
        ui->lineEditYear->setFocus();
    }
    else {
        myObject->setYearOfBirth(year);
        int age=myObject->getAge();
    
        QString ageToPrint=QVariant(age).toString();
        ui->labelResult->setText("Täytät tänä vuonna  "+ageToPrint);
    }
    
  15. Lisää mainwidow.cpp:ssä luokan tuhoajaan rivit:
    delete myObject;
    myObject=nullptr;
    delete ui;
    ui=nullptr;
    
  16. Testaa sovellusta antamalla sekä kokonaislukuja, että kirjaimia.

kuva1


kuva1



Toggle Menu