【问题标题】:What is your preferred pattern for using Qt Model-View Architecture?Qt 模型视图架构的首选模式是什么?
【发布时间】:2011-05-12 13:09:33
【问题描述】:

你如何在 Qt 中使用 MV?我试过这两种方法:

  1. 如果存在 现有/旧版 代码 “数据”-类,我使用模型 作为门面。这 模型实现类得到一个 引用数据,并调用其 模型项访问功能 来电。

  2. 对于新的实现我得出 来自 QAbstractModel 的数据类。

你还有其他方法吗?

【问题讨论】:

  • FWIW,这和我做事的方式很相似。 1) 如果存在使用 *Widget 类的现有代码,请不要理会它,除非它需要对功能进行大修。 2)如果存在现有/遗留代码数据类,则使用模型作为外观。 3)如果我需要一个新的实现,与数据本身有多少相关?如果量大,我会创建一个数据类并将模型用作外观,这样方法通常与 UI 细节分离。 4) Else 派生自 QAbstractModel。

标签: c++ qt architecture qt4


【解决方案1】:

我最终采用的方法与您建议的方法相似。我目前正在使用外观将我的旧数据模型映射到 QAbstractModel。

起初外观有点过于复杂,但慢慢地我将功能从外观模型中提取出来,并将其推送到我的数据模型中。然后有一天我会完全移除立面,这样我的模型就是模型。

只有一个模型会减少我的头疼。

【讨论】:

    【解决方案2】:

    Qt 中的 MV 代码有点杂乱,难以实现。特别是如果您必须实现分层列表(树视图)。

    根据您的需要,我发现在某些情况下,使用 QListWidgetQTableWidgetQTreeWidget 便利类可能不会那么痛苦。

    【讨论】:

    • -1 抱歉,我不是要求替代方案,而是要求 Qt 中 MV 的最佳实践。其实我不觉得它们乱七八糟。相比之下。各种模型(树、表、列表)对我来说都很好。抱歉,这些旧的便利类不是非平凡应用程序的选项。
    猜你喜欢
    • 2011-07-24
    • 1970-01-01
    • 2012-11-06
    • 1970-01-01
    • 2013-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多