Kis kiegészítés még:
- az UI classokat általában statikusan szokás megadni. Nem kell new-t hívni a member konstruktorban és delete-t a destruktorban.
- egy nyelvet használj: nem poén, hogy a föggvény ::add_city(), de benne már magyarul vannak a nevek.
- a kimenet.operator << részt nem teljesen értem. Miért kell oda az operator?
- túl sok a komment. Nem kell minden sort a végén kommentelni. Aki érti, az úgyis a forráskódot olvassa el és megérti, hogy miről szól az. Mindenki mást csak feltart a komment. Ha nagyon nem egyértelmű, hogy az adott rész mit csinál, akkor a függvény előtt vagy közben, pár sorban foglald össze a dolgot.
-
QTextStream kimenet(&allomany);
// ertekek kiirasa XML szeruen adatok.dat-ba
kimenet.operator <<("\t[textNev]\n"+ui->textNev->text()+"\n");
kimenet.operator <<("\t[textAzonosito]\n"+ui->textAzonosito->text()+"\n");
kimenet.operator <<("\t[textJelszo]\n"+ui->textJelszo->text()+"\n");
Ehhez 3 megjegyzés társul:
- ha még nem láttál XML-t, akkor ne nagyon hivatkozzál a forráskódban rá. Ennek semmi köze az XML-hez, csak frusztrációt okoz, hogy hol kellene ebbe belelátni az XML-t. Ne használj buzzwordoket, csak hogy profibbnak tűnjön.
- Ha XML-t akarsz használni, akkor a QDomDocument és a környéke a barátod.
- érdemesebb lenne itt a CSV felé menni, valamilyen "PARAM=VALUE" mentén. Első egyenlőségjelig keresel
A paraméterfájl olvasásához érdemes lenne egy QHash-et declarálnod valahol.
Így nem kellene minden egyes paramétert implementálnod a beolvasó függvényben, csak ott, ahol szükséged van rá. Pl:
QHash hash
void Class:load()
{
végigiterálsz a fájlon
minden egyes sornál megkeresed az első egyenlőségjelet
szétbontod a sort kulcsra és értékre az egyenlőségjel pozíciója alapján
berakod a hashba: hash.insert(key, value);
}
utána pl a jelszót kinyerheted a
hash.value("password", "defaultpassword").toString() hívással. Ha volt ilyen paramétered a fájlban, akkor azt adja vissza, ha nem, akkor a "defaultpassword" stringet.
Így írhatsz egy generic betöltő és paraméter mentő algoritmust, aminek nem kell tudni a paraméterekről. a paramétereket bárhol felhasználhatod, ha a hash függvényt az egyes osztályoknak átadod.
Ha nem akarsz az átadással molyolni, akkor kell egy Singleton pattern alapján létrehozott osztály, aminek egy instance-ja tartalmazza a hasht. Onnantól kezdve a program bármely pontján ez elérhető lesz.
Természetesen az adott implementáció feladatfüggő és lehetnek jobb megoldások is. Viszont mivel most kezded az ezzel való ismerkedés, a fentiek pár támpontot jelentenek a továbbhaladásra. Guglizz bátran ezekkel kapcsolatosan.