项目场景:
Qt中我新建了一个类型为QSqlTableModel,名称为model的指针;用来实现对数据库的添加、删除等操作。有用到以下语句拟对数据库中第i行进行删除:
model->removeRow(i)
问题描述:
目前的问题是当我调用一次model->removeRow(i)时,不能实现删除,当我再调用一次model->removeRow(i)后才能正确删除。其中用到了以下调试语句:
qDebug() << "remove states: " << model->removeRow(i);
也就是说第一次执行model->removeRow(i)时返回的是“false”,第二次执行时才返回“true”。
解决方案:
当我在model->removeRow(i);之前,加入以下语句时,执行一次便可成功删除:
model->select();//选取整个行
猜测是remove之前,数据库是不知道要删除哪个表格对象的。根据Qt官方文档中对select()的解释:
Populates the model with data from the table that was set via setTable()
当我调用一次model->removeRow(i)时,数据库会先选中一个table,再执行model->removeRow(i)时便删除了指定行。
欢迎各位网友留言讨论!