(H) Find-dialogi

Tavoite: Opin tekemään yksinkertaisen dialogin Qt Designerilla ja ymmärtämään Qt:n signals & slots -mekanismia.

Ohjeita:

Toteuta uusi projekti: student/11/find_dialog/.

Luo uusi projekti edellisten materiaaliosioiden ohjeiden mukaisesti.

Tehtävänä on toteuttaa Qt Designerilla alla olevan kuvan mukainen dialogi.

Käyttöliittymä ennen syötteiden antamista

Etiketin (label) Find from file vieressä on lineEdit-komponentti, johon annetaan sen tiedoston nimi, josta sanaa etsitään. Vastaavasti etiketin Find what vieressä on lineEdit-komponentti, johon kirjoitetaan etsittävä sana. Kun Find-nappulaa painetaan, sanaa etsitään annetusta tiedostosta. Etiketin Search status alapuolelta löytyy textBrowser-komponentti, jonne voit tulostaa tiedon siitä, löytyikö kyseinen tiedosto. Jos tiedosto löytyi, voit taas tulostaa tiedon siitä, löytyikö etsittävä sana vai ei.

Ohjelma tulostaa täsmälleen yhden alla olevista teksteistä:

  • File not found
  • File found
  • Word not found
  • Word found

Tuloste File not found tulostetaan siis silloin, jos annettua tiedostoa ei löydy. Jos tiedosto löytyy, mutta jos etsittävää sanaa ei annettu (eli se on tyhjä tai nollan merkin pituinen), tulostetaan File found. Jos tiedosto löytyy ja jos etsittävä sana on jotakin muuta kuin tyhjä, tulostetaan jompikumpi kahdesta viimeisestä vaihtoehdosta sen mukaan, löytyikö tiedostosta vai ei.

Valintaruudussa Match case voit määritellä, onko isoilla ja pienillä kirjaimilla merkitystä vai ei. Tämäkin valinta vaikuttaa siis siihen, kumpi kahdesta viimeisestä tulostusvaihtoehdosta tulostetaan. Käyttäjän tekemä valintaa ei kannata tallettaa boolean-muuttujaan, sillä QCheckBox-luokalla on funktio isChecked, joka palauttaa tiedon valinnasta.

Nappulalla Close voit sulkea pääikkunan (MainWindow).

Ohje automaattitestien läpäisemiseksi

Käytä seuraavia objektinimiä lineEdit-widgeteille: fileLineEdit ja keyLineEdit. Käytä näille widgeteille editingFinished-signaaleja. Käytä nappuloille nimiä: findPushButton ja closePushButton. Käytä lopuille widgeteille nimiä: textBrowser ja matchCheckBox.

Vinkkejä tehtävän tekemiseen:

  • Kannattaa taas aloittaa rakentamalla käyttöliittymä.
  • Muutenkin voit tehdä tehtävän vastaavanlaisissa vaiheissa kuin Painoindeksi-tehtävän.
  • Tiedoston avaamisen, sieltä lukemisen ja sulkemisen voit tehdä entiseen tapaan (graafiset käyttöliittymät eivät aiheuta tähän mitään eroa).
  • Merkkijonon etsinnän voit tehdä haluamallasi tavalla, riittää käyttää esim. string-luokan metodia find.
  • Muista, että oletuksena ohjelma käännetään build-hakemistoon. Testaamista varten kannattaa siirtää syötetiedosto tähän samaan hakemistoon.

A+ esittää tässä kohdassa tehtävän palautuslomakkeen.