在Qt 4.4中设置表格模型后,如下所示:
QsqlTableModel *sqlmodel = new QsqlTableModel(); sqlmodel->setTable("Names"); sqlmodel->setEditStrategy(QsqlTableModel::OnFieldChange); sqlmodel->select(); sqlmodel->removeColumn(0); tableView->setModel(sqlmodel); tableView->show();
QsqlQuery::value: not positioned on a valid record
解决方法
我可以在Qt 4.5.1中确认该错误的存在与您报告的完全一致,并且文档,例如
here,仍然给出了一个错误的例子(即包含removeColumn调用的例子).
作为一种解决方法,我试图写一个连接到beforeUpdate信号的插槽,想要检查QsqlRecord有什么问题,它将在数据库中更新并可能修复它,但我无法理解work – 对该记录参数的方法的任何调用都会导致我的玩具应用程序崩溃.
所以我放弃了这个想法并切换到了无疑是正确的方法(可见性应该由视图决定,而不是模型,对吧? – ):丢失removeColumn并代替它调用tableView – > setColumnHidden(0,true)代替.通过这种方式,ID被隐藏,一切正常.
所以我认为我们可以确认文档错误并在Qt跟踪器中打开它的问题,因此可以在下一轮文档中修复,对吧?