Ok, od pewnego czasu, raz więcej raz mniej, mam doczynienia z przedstawieniem danych pochodzących z bazy danych w formie tabelarycznej (QTableView). Zazwyczaj dane te były "read-olny" więc nie było problemu ich aktualizacji .. (pamiętam tylko jeden przypadek gdzie musiałem umożliwić edycje danycn to zrobiłem to poprzez QLineEdit'y, do których były ładowane dane poprzez zaznaczenie wiersza w tabeli).
Ale do rzeczy..
Wiem, że możliwa jest bezpośrednia edycja danych z poziomu tabeli (o ile dobrzę kojarzę jest to możliwe dla modelu QSqlTableModel po reimplementacji niektórych metod (flags,setData); link: http://qt-project.org/doc/qt-4.8/sql-presenting.html ).
Ogólnie tych predefiniowanych modeli jest kilka:
gdzie każdy z nich ma swoje zalety/wady : np.
-QSqlTableModel : możliwe pobranie tylko jednej tabeli
-QSqlQueryModel : z tego co doczytałem jest to model tylko do odczytu - nie można w nim zmieniać poszczególnych 'krotek', aby potem móc odświeżyć wyniki w wyświetlanej tabeli
-QStandardItemModel : z tego co doczytałem to raczej nie powinno go się używać do tworzenia modelu dla danych pochodzących z bazy danych ponieważ jest to zbyt powolny process.. No i jest potem problem z utworzeniem 'edytowalnej' tabeli..
Tylko moje pytanie brzmi..
Z czego skorzystać (oraz jak powinny wyglądać ogólne kroki) do wykonania takiego modelu danych, które będą wyświetlane w QTableView, i z poziomu tabeli dane będą edytowane (czyli 'odświeżany będzie model oraz widok w tabeli') i będzie sama edycja danych w bazie danych będzie wykonywana w momencie akceptacji poprzez przycisk (tak jak jest to pokazane w przykładzie: http://qt-project.org/doc/qt-4.8/sql-cachedtable.html z tym, że tutaj jest ograniczenie do jednej tabeli (niestety..))
//--
Moje przemyślenia: jedyny pomysł, który przychodzi mi do głowy jak po części to zrealizować to skorzystać z nie wspomnianego jeszcze tutaj QAbstractTableModel (tak jak to zostało zrobione na przykładzie od @MarekR22 http://4programmers.net/Forum/C_i_C++/213377-filtr_splotowy_obrazu_-_qt?p=933606#id933606 ) (tego typu przykładów w sieci jest w sumie kilka), tylko powstaje pytanie - z czego utworzyć ten model ? w przytoczonym przykładzie model stanowi tabela: int mData[MaxMaskSize][MaxMaskSize]; , a jaki powinien być model dla danych pochodzących z bazy danych ? No i jak wygląda kwestia akutalizacji z powrotem w bazie danych.. bo co z tego, że sam model został już zakutalizowany..
Ogólnie z zauważyłem, że moje potrzeby spełniałby przykład CachedTable ale "integorwane" z QSqlQueryModel gdzie można ustawić model->setModel("dowolne zapytanie SQL") .. niestety to tylko marzenie ? ;>
Proszę o zainteresowanie (i z góry za nie już dziękuje :) )