我試圖使用相同的模型來顯示2種不同類型的視圖上的信息。Qt爲QListView和QTableView使用相同的模型
我需要顯示有關具有說明並且可以打開或關閉的150個對象的信息。
一個視圖的是我的對象的通/斷狀態的圖標的表(15 10)的摘要。
另一個視圖是150行的列表,顯示對象的狀態及其描述。
我試着對QAbstractTableModel進行子類化,並返回一個不同的rowCount和columnCount值,這取決於所用的視圖和它的工作原理(我的150個對象全部顯示在表格和列表中),但它刪除了模型和鑑於我需要明確地告訴模型哪個視圖正在使用它,並且當我嘗試將視圖的兩個選擇模型鏈接在一起時它不會如預期的那樣工作,因爲當行和列計數改變時QModelIndexes會改變。
的,這可能是我的問題更好的方法或解決問題的選擇辦法的任何想法?
EDIT由於@ramtheconqueror響應:
從ramtheconqueror的反應使我朝着正確的方向,但令人驚訝我發現ProxyModel採取重寫信息columnCount和rowCount功能考慮在內的小部件尺寸的計算,但做實際上並沒有將它們用於小部件索引。
我的意思是,關於上述我的例子中,使用新的ProxyModel ListView的是具有用於150行足夠空間的插件但只示出了第一10(在源模型rowCount時)。
因此,我反其道而行並使用QAbstractListModel作爲主模型,將QTableView設置爲使用代理模型,但是表格再次正確爲15乘10小部件,但其內容僅在第一列。
我不得不在我的QAbstractListModel子類上將ColumnCount的返回值更改爲15,以獲得正確的結果(即使它真的是一個列表,因此只包含一列)。
我做錯了什麼?我只是不明白爲什麼它的行爲這樣的...
我會實現2個車型共享相同的原始數據池或依賴於其他型號(不QAbstractProxyModel)來完成你的任務一個代理模型。 – OnWhenReady