我是 (Py)Qt 新手,现在将 C# GUI 代码移植到 Qt 几天了。我一直问自己的一个问题是为什么 QAbstractItemModel
提供 parent()
所需的子类方法,以及为什么他们需要提供,在结果 QModelIndex
中,父级中子级的行?
这个要求迫使我在我的树数据上添加另一个层(因为我不想在 indexOf(item)
中调用 parent()
,它不会非常有效)记住行索引。
我问这个是因为这是我第一次看到基于模型的 View 需要这个。例如,NSOutlineViewDataSource
在 Cocoa 中不需要这个。
Trolltech 开发人员是聪明人,所以我确信这样做是有充分理由的,我只是想知道是什么原因。
最佳答案
快速的回答是,“他们当时认为最好。” Qt 开发人员就像你我一样——他们并不完美,他们也会犯错误。他们从那次经历中吸取了教训,结果以 Itemviews-NG 的形式出现在作品中。 .
用他们自己的话来自上面的链接:
Let’s just say that there is room for improvement, lots of room!
通过提供包含行和列索引的父级,它们提供了一种实现树和支持导航的可能方法。他们可以很容易地使用更明显的图形实现。
关于qt - QAbstractItemModel.parent(),为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/867938/