Qt 模型/视图编程设计模式是不是受限?
Posted
技术标签:
【中文标题】Qt 模型/视图编程设计模式是不是受限?【英文标题】:Is Qt Model/View programming design pattern limited?Qt 模型/视图编程设计模式是否受限? 【发布时间】:2012-04-28 01:00:13 【问题描述】:我正在阅读有关Model/View programming 设计模式的信息,但我不明白如何定义模型。我的模型应该继承自 QAbstractItemModel?如果是,我认为它非常有限,因为我的模型类不能从另一个模型类继承。
【问题讨论】:
严格来说没有真正需要从另一个类继承。通常,composition 是 prefered over inheritance。 问题是我使用 ActiveRecord 作为 ORM,所以我的应用程序中的所有模型类都继承自 ActiveRecord::Base。 【参考方案1】:C++ 具有多重继承,因此从技术上讲,您的模型可以从 Qt 模型基类和其他东西派生。 话虽如此,多重继承相当棘手(无论如何对我来说),组合更容易正确。
将 ORM 模型类与 Qt 的“合并”的一种方法是创建一个 Qt 模型类,其中包含一个(或多个)ORM 模型作为成员。 Qt 模型本质上会将所有请求代理到您的 ORM 模型。 Qt 模型只是一个“适配器”。这使您的 ORM 代码独立于 GUI 工具包,这通常很好。
请务必查看 Model subclassing reference 以了解 Qt 方面的内容。
【讨论】:
以上是关于Qt 模型/视图编程设计模式是不是受限?的主要内容,如果未能解决你的问题,请参考以下文章