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

插入到模型中的QSqlRecords在QTableView中为空/空,qt,qt5,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.insertRecor

通过将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中显示为带感叹号的空白记录。它被插入到数据库中,关闭并重新打开应用程序会使记录正常显示


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

record.setGenerated('tableid', False)
由于完全缺少主键,因此也出现了类似的问题:

有关:

QSqlTableModel::setRecord

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


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

尝试更改您的编辑策略:

tablemodel.setEditStrategy(QSqlTableModel::OnManualSubmit);