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

时间:2022-12-25 04:15:21

I'm using a QtableView to display and edit data from a QsqlTableModel. Everything's fine : data from a postgreSQL table is displayed, and user can edit it and save modifications.

我正在使用QtableView来显示和编辑来自QsqlTableModel的数据。一切都很好:显示来自postgreSQL表的数据,用户可以编辑它并保存修改。

I want to add a row when uses click on a button. I use the insertRecord method from my QslTableModel. The row is correctly added in the QTableView.

我想在使用时点击一个按钮添加一行。我使用QslTableModel中的insertRecord方法。该行已在QTableView中正确添加。

My problem is : I want to insert a value from a query in the first cell of this new row. (to automatically populate an unique identifier).

我的问题是:我想在这个新行的第一个单元格中插入一个查询值。 (自动填充唯一标识符)。

This is my code :

这是我的代码:

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)

The value is not inserted in the new row (but if I enter a value by hand, it works perfectly). Nevertheless, the query is OK (as I can see with the « print identifiant » line, which returns the expected integer).

该值未插入新行中(但如果我手动输入值,则它可以正常工作)。不过,查询还可以(我可以看到«print identifiant»行,它会返回预期的整数)。

Do you see what I'm doing wrong ?

你看到我做错了吗?

Are there other methods to insert programmatically a value in a QTableView cell?

是否有其他方法可以在QTableView单元格中以编程方式插入值?

Or do I have to use a QitemDelegate ?

或者我必须使用QitemDelegate?

Thanks for advance.

谢谢你提前。

1 个解决方案

#1


0  

Finally I found the solution :

最后我找到了解决方案:

This line creates a record, but not a record for my QsqlTableModel

这一行创建了一个记录,但不是我的QsqlTableModel的记录

    record = QtSql.QSqlRecord()

I replaced it with this one, and it works perfectly :

我用这个替换它,它完美地工作:

    record = self.model.record()

#1


0  

Finally I found the solution :

最后我找到了解决方案:

This line creates a record, but not a record for my QsqlTableModel

这一行创建了一个记录,但不是我的QsqlTableModel的记录

    record = QtSql.QSqlRecord()

I replaced it with this one, and it works perfectly :

我用这个替换它,它完美地工作:

    record = self.model.record()