QSqlTableModel使用setData()函数无效

现象:

最近使用到QSqlTableModel与QTableView,其中使用setData函数后发现数据库并没有更新,

原因:

经过仔细排查发现,是因为在程序中用到了显示一部分列,而所显示的列中没有包含主键列,所以更新数据库无效,

解决方法:

显示一部分列时采用了重写QSqlTableModel类中的相关函数,然后调用

tableModal->SetSelectColQuery("select name, from table");
tableModal->select();
来实现,具体方法可以百度一下,此时将第一个语句改为:
tableModal->SetSelectColQuery("select name, id from table");
即在其中包含主键id即可。
如果不希望显示包含主键的列,则可以在数据表中不设置主键。
 
posted @ 2020-09-28 11:11  许卡文迪  阅读(1432)  评论(0编辑  收藏  举报