Je peux confirmer que le bogue existe exactement comme vous l'avez signalé, dans Qt 4.5.1, ET que la documentation, par ex. here, donne toujours un mauvais exemple (c'est-à-dire un exemple comprenant l'appel removeColumn
). En guise de solution de rechange, j'ai essayé d'écrire un slot connecté au signal beforeUpdate
, avec l'idée de vérifier ce qui ne va pas avec le QSqlRecord qui est sur le point d'être mis à jour dans la DB et éventuellement de le réparer, mais je peux t que cela fonctionne - tous les appels aux méthodes de ce paramètre d'enregistrement écrasent mon app jouet avec un BusError.
Donc j'ai abandonné cette idée et suis passé à ce qui est sans doute la bonne façon de le faire (la visibilité devrait être déterminée par la vue, pas par le modèle, non?): Perdre le removeColumn
Appelez plutôt tableView->setColumnHidden(0, true)
. De cette façon, les ID sont cachés et tout fonctionne. Donc je pense que nous pouvons confirmer qu'il y a une erreur de documentation et ouvrir un problème à ce sujet dans le suivi Qt, donc cela peut être corrigé dans la prochaine série de docs, n'est-ce pas?
pouvez-vous coller le code pour la requête que vous exécutez aussi? – nmuntz
il n'y a pas de requête. La requête est requise pour QSqlQueryModel. Au lieu de cela, QSqlTableModel affiche simplement une table (permettant également de l'éditer). "QSqlTableModel fournit un modèle modifiable pour afficher une seule table ... La vue obtenue est modifiable car le modèle est modifiable." de "Foundations of Qt development" par Johan Thelin – MadH