0
我研究例如http://doc.qt.io/Qt-5/qtsql-querymodel-editablesqlmodel-cpp.html 我有一个问题,为什么在查询UPDATE语句后,模型清除视图(视图为空),并显示刷新调用SELECT语句后的数据? 我这么认为,没有SELECT运行,模型不需要改变。qtsql-querymodel-editablesqlmodel:为什么需要刷新?
我研究例如http://doc.qt.io/Qt-5/qtsql-querymodel-editablesqlmodel-cpp.html 我有一个问题,为什么在查询UPDATE语句后,模型清除视图(视图为空),并显示刷新调用SELECT语句后的数据? 我这么认为,没有SELECT运行,模型不需要改变。qtsql-querymodel-editablesqlmodel:为什么需要刷新?
该模型直接显示查询结果SELECT
,因此它显示查询时数据库的状态。
更新数据库的代码使用不直接影响模型内部数据的操作(以前的SELECT
查询的缓存结果),因此就视图而言没有变化。
在refresh()
中再次应用SELECT
查询更新模型关于该数据库状态的知识,从而导致新数据在视图中可用。
“清除”是由setData()
中clear()
的调用引起的。 不知道为什么它在那里,我不认为这是必要的。
我认为需要清除以显示更改的数据。但我有一个新的问题关心它。如果更改的项目是大表格的最后一个并且被视为向下滚动,则刷新listview失去滚动位置后,用户需要显示其更改的值,但listview会显示第一个记录。 –
Listview.scrolltoitem需要使用,我想。 –
是的,无论是手动滚动,或者实现您自己的模型,更新而不是重置。 –