【问题标题】:What are the advantages of QAbstractItemModel over QStandardItemModel?QAbstractItemModel 与 QStandardItemModel 相比有哪些优势?
【发布时间】:2012-05-17 15:36:33
【问题描述】:

我想使用模型存储自定义数据。为此,对于选择哪个项目模型进行子类化有点困惑。我需要澄清一下,哪个是子类化的最佳模型?我还需要 QAbstractItemModel 优于 QStandardItemModel 的优势吗?

谢谢!

【问题讨论】:

    标签: qt qt4 pyqt qt-jambi qtruby


    【解决方案1】:

    这取决于您的需求。 如果您只想存储自定义数据并且不想编写自己的模型逻辑,请使用QStandardItemModel。这是通用的,您可以将其用于自定义数据而无需子类化。

    另一方面,如果您想编写自己的模型逻辑,请选择QAbstractItemModel。它是抽象类。这意味着,它没有实现任何行为,它只是一个“接口”。它告诉您模型应该实现哪些方法,因此它可以用作 Qt 中的另一个 ItemModel 类。

    【讨论】:

    • 感谢 kousalik !还有其他主要区别吗?
    • 不,QStandardItemModel 是 QAbstractItemModel 的实现(子类)
    • @Kousalik 您能否扩展您所说的“模型逻辑”的含义? QStandardItemModel 实现了哪些具体的模型逻辑,AbstractItemModel 没有实现?例如,如果您希望您的模型可编辑,使用 StandardItemModel 是否更容易?我只是好奇,因为我一直在使用 QAbstractItemModel,并且正在思考为什么我应该或不应该切换到 QStandardItemModel。
    • 你是如何使用抽象模型的?它不能只是使用。引用其文档: QAbstractItemModel 类定义了项目模型必须使用的标准接口,以便能够与模型/视图架构中的其他组件进行互操作。它不应该被直接实例化。相反,您应该将其子类化以创建新模型。报价结束。不同之处在于标准模型已经实现了一些显示标准数据的基本行为。对于更复杂的结构,过滤,组合或任何你必须实现自己的逻辑,因此去子类化
    • Kousalik 我将 abstractitemmodel 用于树视图,所以我想我理解你的意思,但有人问这个问题可能不明白你所说的“模型逻辑”是什么意思,它构成了你答案的概念支点.
    猜你喜欢
    • 2013-09-22
    • 1970-01-01
    • 2016-01-04
    • 2011-08-02
    • 2011-03-26
    • 1970-01-01
    • 1970-01-01
    • 2010-09-09
    • 2021-05-28
    相关资源
    最近更新 更多