讓我們假設,我有一個點列表。一個QTableView
以笛卡爾座標(x,y,z)顯示列表。另一個QTableView
顯示每個點對任意選擇的平面(x',y')的投影。現在,我想分享這兩個視圖之間的行選擇。它應該無關緊要,用戶在哪個視圖中編輯選擇。因爲(x,y,z)不能通過簡單的索引投影或排列變換爲(x',y'),因此我很確定QAbstractProxyModel
的導數不能立即使用。在語義不同的表格之間共享行選擇
解決方法:(x,y,z)和(x',y')的兩個模型由具有(x,y,z,x',y')行的第三個模型連接。現在,兩個QSortFilterProxyModels
再次分解連接的列。任何視圖的每個選擇實際上都是(x,y,z,x',y')行的選擇,因此是共享的。
寫一個連接列的整個模型,只是爲了再次打破它,似乎很笨拙。但是,通過連接currentRowChanged
來同步兩個選擇模型需要進行信號循環處理,並且接口不支持多個子模型。解決方法是否真的要走?還是有更好的?
最好的問候,瑪麗安
附加信息(編輯4月2日):
- 的解決方案應該是在拖行的下降健壯了。
- 如果我有兩個以上的轉換,解決方案應該很好地擴展。轉換視圖可以獨立使用,也可以像我描述的共享選定行一樣使用。
我假設MyClass是某種_selection合併_類。這種方法的問題在於,如果選擇多行,或者如果您有兩個以上的視圖,則它不能很好地擴展。我對代理模型的想法受到[Steveire的博客](http://steveire.wordpress.com/2010/04/20/sharing-a-qitemselection-between-views-through-proxy-models/)的啓發。我覺得我必須選擇兩個邪惡中較小的一個。 – Marian
我得出的結論是分享選擇並不明確。選擇包含一個焦點元素。由於兩個表格的列都不具有可比性,因此沒有明確的理性,應該集中哪個元素。這個答案很簡單。它有它的問題。但是,從不明確的問題來看,只有解決方法才能解決。從所有變通辦法來看,這似乎是一個很好的辦法。 – Marian