QSqlTableModel使用setData()函数无效

现象:

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

原因:

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

解决方法:

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

tableModal->SetSelectColQuery("select name, from table");
tableModal->select();
来实现,具体方法可以百度一下,此时将第一个语句改为:
tableModal->SetSelectColQuery("select name, id from table");
即在其中包含主键id即可。
如果不希望显示包含主键的列,则可以在数据表中不设置主键。
 
原文地址:https://www.cnblogs.com/Gregg/p/13743733.html