【发布时间】:2016-10-04 17:02:51
【问题描述】:
也许我只是在想这一切都错了,但在我看来,要在 Qt 中拥有一个工作树模型,需要将数据包装在一个项目类中,这对我来说似乎很奇怪。。 p>
在我能找到的所有示例中,为 QTreeView 制作的每个模型都需要实现自定义节点或 TreeItem 类(通常是类型(对象))。这让我觉得很奇怪,原因有很多:
a) 不是模型能够直接提取数据的重点吗? Node 或 TreeItem 类似乎是额外的包袱。
b) 即使树视图需要一个特殊的项目/节点类,为什么该类不是某种 QObject?我见过的大多数 Node 实现都有一组 get/set parent/child 方法和属性;但似乎使用 QObject 已经内置了所有内容,那么为什么不使用它呢?
我的直觉(可能是错误的)告诉我,如果我们发现我们需要一个额外的 Node 类来实现树模型,那是因为 Qt 框架设计中的差距......或者是对它的误解.
我隐约知道 QStandardItem 和 QStandardItemModel,但我发现自己在问为什么它们是 QtGui 而不是 QtCore 的一部分,就像其他模型和 modelItems 一样。用 QtGui 对这些类进行分组感觉就像视图和模型混合在一起。也就是说,我也不明白为什么这些在 QtGui 中,因为它们不继承自任何 QtGui 类(它们来自 QtCore 类)。
如果有人能证明这个设计是合理的,请解释我是如何误解它的,(或者只是与我的挫败感有关)我很想听听!
谢谢!
【问题讨论】:
标签: qt treeview pyside model-view