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()