我是(Py)Qt新手,现在将C#GUI代码移植到Qt几天.我一直在问自己的一个问题是为什么QAbstractItemModel
子类需要提供一个parent()
方法,为什么它们需要在结果QModelIndex
中提供父类中的子行?
这一要求迫使我在我的树数据添加另一层(因为我不想打电话给我们indexOf(item)
的parent()
,它不会是非常有效的)可以记住排索引.
我问这个是因为这是我第一次看到基于模型的视图需要这个.例如,NSOutlineViewDataSource
在Cocoa中不需要这样.
Trolltech开发人员很聪明,所以我确信这是有充分理由的,我只是想知道是什么原因.
答案很简单,"他们认为当时最好." Qt开发人员就像你和我一样 - 他们并不完美,他们确实犯了错误.他们从这些经验中学到了知识,结果是以Itemviews-NG的形式进行的.
用他们自己的话来自上面的链接:
我们只是说有改进的余地,还有很多空间!
通过提供包含行和列索引的父级,它们提供了一种实现树和支持导航的可能方法.他们可以很容易地使用更明显的图形实现.