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需要使用,我想。 –
是的,無論是手動滾動,或者實現您自己的模型,更新而不是重置。 –