Puedo confirmar que el error existe exactamente como lo informa, en Qt 4.5.1, Y que la documentación, p. here, todavía muestra un ejemplo incorrecto (es decir, uno que incluye la llamada removeColumn
).
Como solución temporal he tratado de escribir una ranura conectada a la señal beforeUpdate
, con la idea de comprobar qué pasa con QSqlRecord que está a punto de actualizarse en el DB y posiblemente arreglarlo, pero puedo ' Para que funcione, cualquier llamada a métodos de ese parámetro de registro está bloqueando mi aplicación de juguete con BusError.
Así que he renunciado a esa idea y cambié a lo que sin duda es la manera correcta de hacerlo (la visibilidad debe ser determinada por la vista, no por el modelo, ¿verdad? -): pierde el removeColumn
y en lugar de lo contrario, llame al tableView->setColumnHidden(0, true)
. De esta manera, los ID están ocultos y todo funciona.
Así que creo que podemos confirmar que hay un error de documentación y abrir un problema al respecto en el rastreador Qt, por lo que se puede solucionar en la próxima ronda de documentos, ¿verdad?
¿Puedes pegar el código de la consulta que estás ejecutando también? – nmuntz
no hay consulta. Se necesita consulta para QSqlQueryModel. En cambio, QSqlTableModel solo muestra una tabla (también permite editarla). "QSqlTableModel proporciona un modelo editable para mostrar una sola tabla ... La vista resultante es editable porque el modelo es editable." de "Fundamentos del desarrollo de Qt" por Johan Thelin – MadH