Qt adattárolás

Qt adattárolás
2010-04-25T18:06:41+02:00
2010-04-30T15:05:22+02:00
2022-07-19T09:35:47+02:00
balint85
Sziasztok,
készitettem egy todolistet (részben a segítségetekkel). A user taskokat adhat hozzá egy listához (tablewidget), tetszőleges dátumra. A dátum változtatható QCalendarral de gombbal is. A táblázatban még szerepeltethető egy alarm ikon és pipa is, előbbi egy felugró ablakban megadandó (timeEdit) időpont esetén "ébreszt", utóbbival kipipálhatjuk, ha egy feladatot elvégeztük. Az egyes taskok ébresztési idejét a táblázat nem jelzi ki, csupán tooltipként, de egy rejtett oszlopban tárolja.
Tehát négy oszlop van: task, ébresztő (ha van), pipa, ébresztő ideje (ha van).

Egy ideje már gondolkodom rajta, hogyan történne az adattárolás (automatikus load kell az indításkor), de most jutottam el odáig, hogy az lenne a cél, hogy ha változtatom a napot, akkor a table tartalma feltöltődik az adott napra bejegyzett tételekkel. Ehhez el kell tárolni az már említett adatokat:
dátum, task, ébresztés ikonja, pipa, ébresztés ideje.

Dolgoztam már sql-el php-ban, igy lehetne egy ilyentábla.

A postánál nincs ébresztési idő, ezért ikon sem. Pipa sehol nincs, mert tegyük fel, hogy még 24-e van, így egyik feladat semi hajtódott végre, de ez mindegy is.

Akár XML-be is lehetne tárolni, de azzal még csak webszerkesztés során foglalkoztam egy nagyon rövid ideig.

Mi a véleményetek, mit javasoltok? Sql, XML, vagy esetleg más? Melyik könnyebben megvalósíhatóbb egy olyan ember számára, aki csak középszinten ért a programozáshoz?
Mutasd a teljes hozzászólást!
A klorand által belinkelt példával nem nagyon boldogultam én sem. A fő problémám, hogy a letöltött forráskódban sem szerepel a "frmMain" osztály, csak egy ui fájl, de azt meg nem tudtam megnyitni mert a QtCreator szerint Qt3-ban íródott.

Szóval azt ajánlom, hogy az általam linkelt példákat nézegesd inkább:
http://doc.trolltech.com/4.6/examples-xml.html

Továbbá ajánlom a qt-apps oldalát. Keresgess itt is.
Én kipróbáltam pl. >ezt. Működik, és jó is.

Nézegesd ezeket is!
Mutasd a teljes hozzászólást!

  • En XML-t javasolnek, nem kell bajlodnod DB driverrel, es a kimenet xml fajl olvashato lesz egy egyszeru szovegszerkesztovel is.

    >>Itt talalsz egy nagyon jo Qt-s XML tutorialt, teged kb. a Reading using SAX fejezetig erdekel!
    Mutasd a teljes hozzászólást!
  • Én ezt javaslom: http://doc.trolltech.com/4.6/qsettings.html

    Egyszerű a használata. Van rá példa, hogyan kell csinálni. Én ezzel csinálnám.
    Egyik előnye pl. nem kell bajlódnod a fájlkezeléssel.
    Mutasd a teljes hozzászólást!
  • Én ezzel csinálnám.


    QSettings nagyon nem erre valo, kulcs-ertek parokra talaltak ki, ami inkabb beallitasok mentesere valo, nem tablazatszeru adatok tarolasara.

    Egyik előnye pl. nem kell bajlódnod a fájlkezeléssel.


    Mert az XML-es osztalyokkal sokat kell...

    Szerk: latom beginReadArray()/beginWriteArray()-el lehet settingsbe is egyszeruen tablazatsorokat menteni, az elso kijelentesem bullshit. En akkor is az XML-t reszesitenem elonyben, mert egy standard formatum, ha kesobb mas nyelvekben irt programokban is fel akarod dolgozni a fajlokat, konnyebb dolgod lesz...
    Mutasd a teljes hozzászólást!
  • A mentést hogyan javasolnátok?
    Menteni kell:
    -új task hozzáadásakor
    -task kipipálásakor
    -task kipipálsának törlésekor (pl. rossz taskot jelöltünk be)
    -task szerkesztésekor
    -ébresztő funkció hozzáadásakor
    -ébresztő funkció törlésekor
    -stb.

    Először létrehozunk egy üres táblát (mondjuk legyen xml), majd minden alkalommal újra feltöltjük/felülírjuk, vagy, ami valószínűleg bonyolultabb, de gyorsabb mentést tesz lehetővé, csak a változott elemeket updateljük? Ebben az esetben minden egyes mentésnél - amiket felsoroltam - kell egy update funkció.
    Én az első verziót látom egyszerűbbnek, főleg, hogy ez egy kis alkalmazás.
    Valamint másik dátumra váltáskor nem kell menteni az előző adatokat, mert minden változtatáskor történik mentés, vagy update-tel, vagy teljes újraírással.
    Mutasd a teljes hozzászólást!
  • Én a folyamatos update-t javasolnám. Minden lényeges esemény esetén azonnal lementeném a változott elemet.
    Ha az egész tábla mentését választanád, akkor elég lenne csak a program kilépésekor megcsinálni a mentést, pl a főablak destruktorában.
    Ennek természetesen meg lenne az a hátránya, hogy a program esetleges lefagyása esetén elvesznének a változások.
    Mutasd a teljes hozzászólást!
  • Elkezdtem csinálni ezt a tutorialt, bár ez elég hülye kifejezés, mert ezen nincs mit csinálni, de problémába ütköztem.

    A cpp-be beirtam az Example 9-4-es részt, és ezt kapom:
    ISO C++ forbids declaration of 'Contact' with no type

    Valamint a 9-6-os részt hova teszem?
    Mutasd a teljes hozzászólást!
  • Inkább ezeket nézegesd: http://doc.trolltech.com/4.6/examples-xml.html

    Ezeket könnyen letöltheted. Ezek között is ott van a DOM nevű.
    Egyébként a Qt telepítése során ezek a példaprogramok is telepítésre kerülnek. Keresgessél a Qt könyvtárában!
    A
    qt/examples/xml
    könyvtárat keresd!
    Mutasd a teljes hozzászólást!
  • Őszintén szólva ez állati bonyolultnak tűnik. Biztos csak én vagyok türelmetlen de komolyabban nézegetni kezdtem az első ajánlott linket, letöltöttem a fájlokat hozzá (amik nem működnek csak részben), és hiába gondolom, hogy a leírás alapján működik, nem.
    Feltöltöttem ide a projectet, igy egyszerűbb, mint bemásolni a kódot.

    Nézegettem az sql kódot is, az sokkal szimpatikusabb volt, de ha egy ilyen progit freeware-ré akarok tenni, akkor ez ebben az esetben bonyolultabb, mert kell egy öntelepítő sql alkalmazás...
    Mutasd a teljes hozzászólást!
  • komolyabban nézegetni kezdtem az első ajánlott linket,


    Melyiket? Mert az én linkemben nem volt ilyen "Contact" nevű. Készíts egy linket az URL-ről, amit letöltöttél!

    Másik, hogy miért szerepel két "contact" osztály is a contact.h fájlban? Az egyik kisbetűvel a másik naggyal.
    Ezt így nem szokás.
    Ha új osztályt akarsz létrehozni, akkor külön header fájlba csináld, és ne a kisbetű-nagybetű különbségével különböztesd meg, hanem pl. Contact és MyContact. Az osztálynevek mindig legyenek nagybetűsek, ahogy az utolsó példám is mutatja!
    Mutasd a teljes hozzászólást!
  • Arra gondoltam, amit klorand javasolt. Holnap estefelé tudok megint leülni a géphez, addig tovább emésztem dolgot.
    Azért van két contact osztály, mert nem értem az egészet :S Fogtam a tutorial elejét meg a letöltött fájlokat és próbáltam összerakni a legalapabb dolgot...
    Mutasd a teljes hozzászólást!
  • Akkor felejtsd el ezt a stílust. Minden osztálynak legyen saját header fájlja és cpp fájlja!
    És ne legyen két azonos nevű osztály!
    Mutasd a teljes hozzászólást!
  • A peldaban Contact egy struktura, melynek az adaattagjait mentik XML-be, helyette lehet barmi, a lenyeg, hogy ebben tarolja a kimentendo vagy beolvasott adatokat, igy konnyebb vele dolgozni...
    Mutasd a teljes hozzászólást!
  • A klorand által belinkelt példával nem nagyon boldogultam én sem. A fő problémám, hogy a letöltött forráskódban sem szerepel a "frmMain" osztály, csak egy ui fájl, de azt meg nem tudtam megnyitni mert a QtCreator szerint Qt3-ban íródott.

    Szóval azt ajánlom, hogy az általam linkelt példákat nézegesd inkább:
    http://doc.trolltech.com/4.6/examples-xml.html

    Továbbá ajánlom a qt-apps oldalát. Keresgess itt is.
    Én kipróbáltam pl. >ezt. Működik, és jó is.

    Nézegesd ezeket is!
    Mutasd a teljes hozzászólást!
  • pelz: A második linked egy sima xml editor, nem? Azzal mit érek?
    Megnézem a tutorialokat is.
    Nézegettem a QSettingst is, nem találtam használhatónak
    Amúgy azt találtam ki, hogy a táblázatot berakom egy dinamikus mátrixba, ezt kiexportálom excelbe, majd innen vissza. Nem hangzik bonyolultnak, mi a véleményetek?
    Van ugye minden napra egy tábla taskokkal, ébresztővel stb. A mátrix és az export tábla igy nézne ki pl:

    [dátum] [task] [ébresztő] [pipa] [ébresztő ideje]

    Azaz szépen sorban lennének az egyes dátumok és a hozzájuk tartozó adatok.
    [2010.05.01] [ebéd] [ébr van] [pipa nincs] [12:30]
    [2010.05.01] [gyerekért menni suliba] [ébr nincs] [pipa nincs] stb
    [2010.05.02] [meeting] stb...
    2010.05.03
    2010.05.03

    A betöltés aszerint történne, hogy melyik napra lapoz a user, a program, megkeresi az excel tábla erre a napra vonatkozó sorait és betölti. VAGY az excel tábla már előre betöltésre kerül és igy a mátrixban keresi meg a megfelelő sorokat.

    Futás közben mindig csak a mátrix íródna felül, és az excel exportja/importja csak a bezáráskor/megnyitáskor hívódna meg.
    Mutasd a teljes hozzászólást!
  • A második linked egy sima xml editor, nem? Azzal mit érek?


    Azt, hogy megvan benne minden olyan rész, ami neked szükséges az xml fájlok kezelésére.

    Nézegettem a QSettingst is, nem találtam használhatónak


    Miért? Mi a baj vele?

    Mutasd a teljes hozzászólást!
  • Pelz: utánanézek, egyelőre a csv-vel foglalkozom. Majd aztán kiderül melyiket tudom megcsinálni.
    köszi addig is, meg klorandnak is
    Mutasd a teljes hozzászólást!
abcd