QAbstractItemModel.parent(),为什么?

Vir*_*ras 8 qt

我是(Py)Qt新手,现在将C#GUI代码移植到Qt几天.我一直在问自己的一个问题是为什么QAbstractItemModel子类需要提供一个parent()方法,为什么它们需要在结果QModelIndex中提供父类中的子行?

这一要求迫使我在我的树数据添加另一层(因为我不想打电话给我们indexOf(item)parent(),它不会是非常有效的)可以记住排索引.

我问这个是因为这是我第一次看到基于模型的视图需要这个.例如,NSOutlineViewDataSource在Cocoa中不需要这样.

Trolltech开发人员很聪明,所以我确信这是有充分理由的,我只是想知道是什么原因.

Kal*_*son 7

答案很简单,"他们认为当时最好." Qt开发人员就像你和我一样 - 他们并不完美,他们确实犯了错误.他们从这些经验中学到了知识,结果是以Itemviews-NG的形式进行.

用他们自己的话来自上面的链接:

我们只是说有改进的余地,还有很多空间!

通过提供包含行和列索引的父级,它们提供了一种实现树和支持导航的可能方法.他们可以很容易地使用更明显的图形实现.