2012-04-28 59 views
2

我念叨Model/View programming設計模式,但我不知道如何來定義模型。我的模型應該從QAbstractItemModel繼承?如果是,我認爲這是非常有限的,因爲我的模型類不能從另一個模型類繼承。Qt Model/View編程設計模式是否有限?

+0

嚴格來說沒有真正的需要從另一個類繼承。通常,[組成](http://en.wikipedia.org/wiki/Composite_pattern)是[者優先過度繼承](http://en.wikipedia.org/wiki/Composition_over_inheritance)。 – dschulz 2012-04-28 02:06:43

+0

問題是我使用ActiveRecord作爲ORM,所以我的應用程序中的所有模型類都從ActiveRecord :: Base繼承。 – 2012-04-28 02:50:12

回答

2

C++有多重繼承,所以在技術上你的模型可能從Qt模型基類和其他東西都派生。
話雖這麼說,多重繼承是相當棘手的(我反正),成分更容易得到正確的。 「合併」與Qt的你的ORM模型類的

一種方法是創建具有一個(或多個)您的ORM的模型的Qt的模型類的成員。 Qt模型本質上將所有請求代理到您的ORM模型。 Qt模型只是一個「適配器」。這使您的ORM代碼獨立於GUI工具箱,這通常很好。

確保你的事情了Qt側檢查出Model subclassing reference