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

QSqlTableModel::removeRow() does not delete row in SQLite database

我使用 Windows、C++ 和 Qt 5.11.1。我有一个简单的单table SQLite 数据库。 table "templates" 包含主键:id INTEGER PRIMARY KEY。当我尝试删除 "templates" 中的一行(使用 QSqlTableModel)时,m_model.removeRow(0) returns 正确且 submitAll() returns 正确。但是 table 仍然拥有该行。我发现 Qt 生成了以下 SQL:

DELETE FROM templates WHERE "templates"."id" IS NULL.
我想问题与 QSqlRecord::isGenerated 有关。我该如何解决这个错误?

QSqlTableModel::removeRows documentation :

Deletions are submitted immediately to the database. The model retains a blank row for successfully deleted row until refreshed with select().

抱歉,原因是在 QSqlTableModel 后代中覆盖了 data() 方法。 record() 需要方法 data(index, Qt::EditRole)