我的應用程序是一個工具庫管理器。它有一個包含列表和工具列表的樹形視圖。它也有一個表格顯示工具列表。QtAbstractItemModel。一起使用QtreeView和QtableView
當我在樹狀列表點擊,我想表明兒童列表中的tableview。當我點擊樹中的單個工具時,我切換小工具並顯示工具的編輯窗體。
如何限制的tableview只在樹視圖中選擇的節點的孩子?
我的數據模型是一個自定義qAbstractItemModel。
我的應用程序是一個工具庫管理器。它有一個包含列表和工具列表的樹形視圖。它也有一個表格顯示工具列表。QtAbstractItemModel。一起使用QtreeView和QtableView
當我在樹狀列表點擊,我想表明兒童列表中的tableview。當我點擊樹中的單個工具時,我切換小工具並顯示工具的編輯窗體。
如何限制的tableview只在樹視圖中選擇的節點的孩子?
我的數據模型是一個自定義qAbstractItemModel。
我不知道這是否是一個完整的答案,以我自己的問題,但我更接近。在tableview中,我可以調用setRootIndex()並從qTreeView傳入當前項目。這樣做只顯示錶格列表中當前樹項目的子項。
對於我來說,它仍然顯示這兩個工具和孩子名單,我想過濾的,但我認爲這是一個不同的問題。
我有一個類似的情況(不完全一樣!)作爲你的。在分享我的經驗之前,我的假設是您有一個由組成您的列表/工具的項目組成的數據庫。
一個可能的解決方案是創建兩個定製機型,一個樹視圖(比方說,MyTreeViewModel -> QAbstractItemModel
,與QTreeView
相關的),一個用於表視圖(MyTableViewModel -> QAbstractItemModel
,與QTableView
相關)。
這兩個自定義模型應由同一代理與數據庫一起處理。 關鍵區別是樹視圖模型適用於整個數據庫,而表視圖模型僅包含一個子集,也就是主列表中所選項的子項。把它看作完全映射與數據庫的部分映射。
當用戶點擊樹形視圖中頂部節點列表時,您可以發出一個信號,該信號可由MyTableViewModel
拾取,僅填充子元素,並由QTableView
顯示。
因爲同一代理服務這兩種模式,你應該能夠保持數據的完整性,在這個意義上改變一個模型的基礎數據應該反映在其他模型。這個解決方案對我的應用程序非常有效。希望這也適用於你!
請將您的意見放在答案下,而不是創建一個單獨的答案。謝謝。 – NameRakes
我的評論不是關於另一個答案。這是一個尚未討論的新答案。 – sliptonic
明白了。在樹視圖中,只有在選定項目下的孩子才能在表格視圖中顯示和顯示,您有什麼策略? downvoted因爲沒有示例來展示如何進行操作的 – NameRakes