在qt中,通過寫model, 讓tableview呈現不同的樣式。有時候會遇到比較蛋疼的局面。之前寫的乙個model很適合,但是不支樹形顯示。現在的需求就是要顯示樹形,其它的跟之前的一樣。這種情況下,是重寫乙個呢,還是想想別的辦法。
有兩種思路可以考慮,乙個是派生,乙個是適配。派生的乙個model,並要顯示樹形的話,很難實現,畢竟要重寫index, parent等方法。用適配的方式來實現則相對容易實現。
在計算機程式設計中,介面卡模式(有時候也稱為包裝樣式或包裝),將乙個類的介面適配成使用者需要的介面,乙個適配允許通常因為介面不一致而不能正常在一起工作的類在一起。
思路如下:
1)定義乙個model, 內部有乙個成員是testmodel(適配的model)。構造的同時,構造成員。
2)定義乙個資料結構node。用於構造樹形。資料結構的成員設計上要傾向於好轉換。如可以在樹形結構構造的時候,有乙個成員專門用於記錄它是第幾個(在平的情況下)。
3)qmodelindex dataindex(qmodelindex index) const;這個方法用於index的轉換。執行適配。
4)data, setdata等方法裡先通過dataindex轉換一下。取值調成員testmodel的data,setdata等方法。
思路很簡單,主要是覺得這個跟適配者模式很像,而且很方便的能實現不同的model之間的轉換或組合。
同樣的思路還可以通過乙個model, 內部組合多個model的方式來實現比較複雜的功能。如開啟另存框左側顯示本地檔案還有其它的一些東西的,可 以參考這樣的實現。本地檔案用qt自帶的filemodel就可以,如果還想顯示別的東西,就可以通過乙個model, 把兩個或多個model組合起來。這是不是又是另外一種設計模式呢?
設計模式 適配者模式
今天是418旅遊節,我也出門去玩玩,突然看到乙個外國友人在問路,然而他問的那個人似乎聽不懂他在說啥,我走上前去,憑著蹩腳的口語成功幫助了外國友人,感覺自己胸前的紅領巾更亮了。介面卡模式就是將原本兩個不相容的介面,通過某種方式使其能夠共同工作。介面卡模式也分為類結構性模式和物件結構性模式。前者相比後者...
適配者模式的使用
適配者模式可以比喻成這個場景,只有usb介面的電腦電腦 ps 2介面的鍵盤 轉接線,電腦要實現打字功能就要用到鍵盤,因為他們兩介面不一致沒發直接連線所以要借助轉接線,轉接線就相當於乙個介面卡 adapter 而鍵盤就是就是被適配者 adaptee 電腦是乙個客戶端 client 下面用 來表述他們的...
設計模式 之 適配者模式
23種設計模式原始碼 建立型模式,共五種 工廠方法模式 抽象工廠模式 單例模式 建造者模式 原型模式 結構型模式,共七種 介面卡模式 裝飾器模式 模式 外觀模式 橋接模式 組合模式 享元模式 行為型模式,共十一種 策略模式 模板方法模式 觀察者模式 迭代子模式 責任鏈模式 命令模式 備忘錄模式 狀態...