Posso confermare che il bug esiste esattamente come lo si segnala, in Qt 4.5.1, E che la documentazione, ad es. here, fornisce ancora un esempio errato (ad esempio uno che include la chiamata removeColumn
).
Come soluzione ho provato a scrivere uno slot collegato al segnale beforeUpdate
, con l'idea di controllare cosa c'è che non va con il QSqlRecord che sta per essere aggiornato nel DB e possibilmente correggendolo, ma io posso Per far sì che funzioni, qualsiasi chiamata ai metodi di quel parametro del record blocca la mia app giocattolo con un BusError.
Quindi ho rinunciato a quell'idea e sono passato a quello che è senza dubbio il modo giusto per farlo (la visibilità dovrebbe essere determinata dalla vista, non dal modello, giusto? -): perdere il removeColumn
e in sostituzione di esso chiama invece tableView->setColumnHidden(0, true)
. In questo modo gli ID sono nascosti e tutto funziona.
Quindi penso che possiamo confermare che c'è un errore di documentazione e aprire un problema al riguardo nel tracker Qt, quindi può essere corretto nel prossimo ciclo di documenti, giusto?
fonte
2009-07-18 19:59:24
puoi incollare il codice per la query che stai eseguendo anche tu? – nmuntz
non ci sono query. La query è necessaria per QSqlQueryModel. Invece, QSqlTableModel mostra solo una tabella (permettendo anche di modificarla). "QSqlTableModel fornisce un modello modificabile per mostrare una singola tabella. ... La visualizzazione risultante è modificabile perché il modello è modificabile." da "Fondamenti di sviluppo Qt" di Johan Thelin – MadH