我使用Windows、C++和Qt 5.11.1。我有一个简单的单表SQLite数据库。这个表"templates"包含主键:id INTEGER PRIMARY KEY
。当我试图删除"templates(使用QSqlTableModel
("中的一行时,m_model.removeRow(0)
返回true,submitAll()
返回true。但该表仍然拥有该行。我发现Qt生成了以下SQL:
DELETE FROM templates WHERE "templates"."id" IS NULL
我想这个问题与QSqlRecord::isGenerated
有关。如何修复此错误?
As QSqlTableModel::removeRows文档:
删除会立即提交到数据库。模型为成功删除的行保留一个空白行,直到用select((刷新为止。
对不起,原因是在QSqlTableModel
子代中重写了data()
方法。record()
方法需要data(index, Qt::EditRole)
。