插入到模型中的QSqlRecords在QTableView中为空/空白

时间:2017-02-18 18:53:46

标签: qt qt5

通过

将QSqlRecord插入QSqlTableModel时出现问题
record = self.tablemodel.record()
record.setValue('originfile_path', filepath)
record.setValue('originfile_hash', filehash)
record.setValue('image', img_pkl)
record.setValue('area', area)
self.tablemodel.insertRecord(-1, record)

插入的记录在QTableView中显示为带有感叹号的空白记录。它被插入数据库关闭并重新打开应用程序导致记录正常显示。

Exclamation Point Records rows

2 个答案:

答案 0 :(得分:0)

将生成的主键标记为False,在pyqt中通过以下方式完成:

record.setGenerated('tableid', False)

由于缺少主键,在那里发生了类似的问题:

https://forum.qt.io/topic/37023/solved-updating-qsqlrecord-during-qsqltablemodel-beforeupdate-causes-blank-row-in-qtableview/4

相关的documentation

<强> :: QSqlTableModel的setRecord

  

对于数据库要提供值的字段,调用者应该记住将生成的标志设置为FALSE,例如自动递增的ID。

问题是由SQLite生成的PK与QT生成的PK之间的差异引起的。

答案 1 :(得分:0)

尝试更改编辑策略:

tablemodel.setEditStrategy(QSqlTableModel::OnManualSubmit);