[英]How to insert programmatically a value in a new row of a QtableView
我正在使用QtableView来显示和编辑来自QsqlTableModel的数据。 一切正常:显示来自postgreSQL表的数据,用户可以对其进行编辑并保存修改。
我要在使用单击按钮时添加一行。 我使用QslTableModel中的insertRecord方法。 该行已正确添加到QTableView中。
我的问题是:我想在新行的第一个单元格中插入查询的值。 (以自动填充唯一标识符)。
这是我的代码:
def ajoutlgn(self):
query_idNewLine = QtSql.QSqlQuery(self.db)
if query_idNewLine.exec_('SELECT sp_idsuivi+1 FROM bdsuivis.t_suivprev_tablo ORDER BY sp_idsuivi DESC LIMIT 1'):
while query_idNewLine.next():
identifiant = query_idNewLine.value(0)
#print identifiant
record = QtSql.QSqlRecord()
record.setValue(1,identifiant)
self.model.insertRecord(self.model.rowCount(), record)
该值不会插入新行中(但是,如果我手动输入一个值,则效果很好)。 尽管如此,查询还是可以的(正如我可以在“ print identifiant”行看到的那样,该行返回期望的整数)。
看到我做错了吗?
还有其他方法可以以编程方式在QTableView单元格中插入值吗?
还是我必须使用QitemDelegate?
感谢前进。
最后我找到了解决方案:
该行创建一条记录,但未创建我的QsqlTableModel的记录
record = QtSql.QSqlRecord()
我用这个替换了它,它可以完美地工作:
record = self.model.record()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.