繁体   English   中英

如何以编程方式在QtableView的新行中插入值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM