QSqlTableModel :: removeRow()不会删除SQLite数据库中的行

时间:2018-11-07 06:17:38

标签: c++ sqlite qt5 delete-row qsqltablemodel

我使用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有关。如何解决此错误?

2 个答案:

答案 0 :(得分:1)

QSqlTableModel::removeRows documentation

  

删除立即提交到数据库。模型 为成功删除的行保留空白行 ,直到用select()刷新。

答案 1 :(得分:0)

对不起,原因是在data()后代的QSqlTableModel方法中被覆盖。 record()需要data(index, Qt::EditRole)方法。