我使用Windows,C ++和Qt 5.11.1。我有一个简单的单表SQLite数据库。该表“模板”包含主键:id INTEGER PRIMARY KEY
。当我尝试删除“模板”中的一行(使用QSqlTableModel
)时,m_model.removeRow(0)
返回true,submitAll()
返回真正。但是表仍然拥有该行。我发现Qt生成了以下SQL:
DELETE FROM templates WHERE "templates"."id" IS NULL
。
我认为问题与QSqlRecord::isGenerated
有关。如何解决此错误?
答案 0 :(得分:1)
为 QSqlTableModel::removeRows documentation:
删除立即提交到数据库。模型 为成功删除的行保留空白行 ,直到用select()刷新。
答案 1 :(得分:0)
对不起,原因是在data()
后代的QSqlTableModel
方法中被覆盖。 record()
需要data(index, Qt::EditRole)
方法。