我試圖構建一個用戶界面,該界面在每秒刷新數據的同時顯示錶格的內容。QTableView在模型刷新後保留選擇
因此我有機型鏈:
- QSqlTableModel的 - 訪問的表內容
- 爲MyModel - 從QIdentityProxyModel繼承來修改數據的位(源是爲TableModel)
- SomeFilterModels - 其中有MyModel作爲源
此鏈結束於QTableView。由於QSqlTableModel每秒刷新一次,因此TableView中的任何選擇都會每秒被刪除。現在我有兩個想法來解決這個問題。
- 防止爲TableModel從檢測的變化。哪個工作不好。
- 捕捉模型前後發生的一些事件即將更改爲存儲,並且 恢復當前選擇。可悲的是,QIdentityProxyModel不會轉發像modelAboutToBeReset或modelReset或dataChanged這樣的信號 ..也不可能從MyModel重新發送 這些信號,因爲它們是私人的。
我正在尋找其他方法來對付那些沒有成功的刷新問題。但我無法想象,我是第一個使用代理鏈模型和定期模型刷新和選擇的人。
任何人都可以給我一些提示嗎?
在此先感謝。
也許值得大家注意:
- QSqlTableModel的一個被用於許多TableViews。 (使用不同的FilterProxyModel鏈。)所以我不能停止刷新,因爲一個View有選擇。
- 您可能認爲我知道何時調用模型刷新方法。但就目前來說,通過我的UI架構這個槽有點複雜。我的意思是模型被更新,並且TableView已經通過一些ProxyModels連接到更新後的模型。應該不需要另一種溝通方式。
希望我的問題有道理。
我的第一條評論是隻更新模型中的更改,但由於您使用的是SQL模型,因此我懷疑您可以對變更有更多的瞭解。是否有一些標識符可以從選定的數據中獲得,以瞭解選擇了哪些項目,然後在模型刷新時找到模型索引? –
@ CalebHuitt-cjhuitt我可以得到這些標識符,但我不知道何時模型刷新,以便我可以收穫選擇。 – r2p2