首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pyside中的树模型

Pyside中的树模型
EN

Stack Overflow用户
提问于 2016-10-04 17:02:51
回答 1查看 661关注 0票数 0

也许我只是想错了,但我觉得奇怪的是,要在Qt中建立一个工作树模型,需要将数据包装在item类中。

在我能够找到的所有示例中,为QTreeView创建的每个模型都需要自定义Node或TreeItem类(通常为(Object)类型)的实现。我觉得这很奇怪,原因有几个:

( a)难道模型不能直接提取数据的全部要点吗?Node或TreeItem类似乎是额外的包袱。

b)即使树视图需要一个特殊的项/节点类,为什么这个类不是某种QObject呢?我看到的大多数Node实现都有一个get/set父/子方法和属性的集合;但是似乎使用QObject时已经内置了这些,那么为什么不使用它呢?

我的直觉(这可能是错误的)告诉我,如果我们发现我们需要一个额外的节点类来实现一个树模型,那是因为Qt框架设计中的一个空白。或是对它的误解。

我模糊地意识到了QStandardItem和QStandardItemModel,但是我发现我自己在问为什么它们是QtGui的一部分,而不是QtCore,就像其他的模型& modelItems一样。用QtGui对这些类进行分组感觉就像视图和模型正在混合在一起。尽管如此,我也不明白为什么这些类在QtGui中,因为它们不继承任何QtGui类(它们来自QtCore类)。

如果有人能证明这个设计是合理的,解释我是如何误解它的(或只是与我的沮丧有关),我很想听听它!

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2016-10-04 18:54:46

多年来(几十年)实现了许多基于QAbstractItemModel的数据模型?我理解你的沮丧,然而..。

要在Qt中建立工作树模型,需要将数据包装在item类中。

不用谢。简单地说,在很多情况下,将模型行封装到自己的类中是有意义的--每一列表示项的不同属性(例如,考虑如何实现QFileSystemModel )。

( a)难道模型不能直接提取数据的全部要点吗?Node或TreeItem类似乎是额外的包袱。

您可以使用QAbstractItemModel::dataQAbstractItemModel::setData直接获取/设置数据

b)即使树视图需要一个特殊的项/节点类,为什么这个类不是某种QObject呢?我看到的大多数Node实现都有一个get/set父/子方法和属性的集合;但是似乎使用QObject时已经内置了这些,那么为什么不使用它呢?

QObject是一个相当重要的东西。假设一个模型可以有(几十个?)数千行和每一行可以有相当少的列--不难看出,强迫每个“单元格”从QObject继承可能不是很好的缩放。

我模糊地意识到了QStandardItem和QStandardItemModel,但是我发现我自己在问为什么它们是QtGui的一部分,而不是QtCore,就像其他的模型& modelItems一样。

QStandardItem使用了几种QtGui类型,比如QIconQBrush,因此它必须是QtGui的一部分。

因此,正如我说的,我理解您的沮丧,但是,为了保持相当通用的Qt代码,它实际上是非常有用的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39857974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档