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



我使用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)

最新更新