Üdv!
Van egy érdekes frissítés problémám a Qt, QDataWidgetMapper osztályával kapcsolatban, hátha van valakinek ötlete hogyan lehetne megoldani, illetve mi a gond.
Van egy QSqlTableModel (ami egy SQL adatbázisból hoz le egy táblázat adatait)
QDataWidgetMapper -el összekötöm a model egyes mezőit, a képernyőn látható widget-ekkel amit majd e felhasználó módosít ha akar.
Ugyan ezen a képernyőn van egy olyan funkció ami azt a rekordot módosítja amit épp lát a felhasználó, de ezt nem a mapperen hanem közvetlenül QSqlQuery-n keresztül teszem, miután ez a kód lefut hívok egy QSqlTableModel select -et hogy frissüljenek az adataim, ami a modelben le is frissíti, de a mapper-en keresztül hozzákötött widget-ekben nem frissül.
Mi lehet az oka / hol hibás az elképzelésem ?
Előre is köszi a segítséget, javaslatot!
Hozzászólások
Mivel a tarolas nem a mapperen keresztul megy, nem lehet, hogy a mappernek is szolni kene, hogy: he ocsi, frissultek az adatok am! Mert igy nem tudja. Egyebkent a QSqlQuery ugyanaz az objektum, mint amin a QSqlTableModel is alapszik, vagy ez egy masik objektum? Kene latni nemi kodot ahhoz, hogy segiteni tudjunk.
--
hrgy84: Mivel a tarolas nem a mapperen keresztul megy, nem lehet, hogy a mappernek is szolni kene, hogy: he ocsi, frissultek az adatok am!
Na ez az, ezt nem tudom hogyan kell csinálni.
Egyebkent a QSqlQuery ugyanaz az objektum, mint amin a QSqlTableModel is alapszik, vagy ez egy masik objektum?
Nem értem a kérdésed.
Magyarázat hogyan is oldottam meg:
Létrehozok egy formot, melyen létrehozok egy modelt (QSqlTableModel -t), amit megjelenítek a QTableView -en keresztül.
Ezen az ablakon egy elemet kiválaszt a felhasználó szerkesztésre, amire létrehozok egy újabb formot (szerkesztő ablak) melynek átadom a modelt, és a kiválasztott elem indexét.
Összekötöm mapper-en keresztül a model "mezőit" a adatbeviteli mezőkkel, melyből egy csak olvasható (m_ui->leReadOnly) :
A szerkesztő formon van egy gomb amit ha megnyom a felhasználó le fut szímítás, amit egy sql query update-vel bejegyzi az adott rekord adatai közzé, ezt az új adatott, ami már az adatbázisban ott van, szeretném ha frissülne a képernyőn a mezőhöz kapcsolt elemben (m_ui->leReadOnly).
Azzal próbálkoztam hogy miután a lefutott az update sql query hívtam egy model->select() -et de ez nem elég, a modelben már jó érték van de a m_ui->leReadOnly -ban továbbra is a régi.
A kérdés alapvetően az hogy hogyan tudom a mapperen keresztül frissítésre bírni a képernyőn látható adatokat?
Most nincs kedvem megnyitni megint az api dokumentaciot, inkabb kerdezek: nincs lehetoseg arra, hogy a QSqlDataMapper altal hasznalt query ojjektumot kerd el es hasznald? Mert lehet, hogy az rendesen be van triggerelve a mapperhez.
--
Köszi a tippet!
Sikerült megoldani, a probléma az volt hogy miután a model-t, újra le select-áltam, a mappert újra rá kell állítani a kiválasztott rekordra a setCurrentIndex segítségével.