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.
myLibrary
private: int yearOfBirth;
int getAge();
int MyLibrary::getAge() { QDate currentDate = QDate::currentDate(); int currentYear = currentDate.year(); return currentYear - yearOfBirth; }
#include "mylibrary.h"Lisää mainwindow.h:n private osaan rivi
MyLibrary *myObject;
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); }
delete myObject; myObject=nullptr; delete ui; ui=nullptr;