qt - QAbstractItemModel.parent(),为什么?

标签 qt

我是 (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/

相关文章:

c++ - QMenu图标背景色

QT 4 - 如何将 QuaZip 和 QtCrypto 构建到 .Lib?

qt - Qml QTouchDevice

c++ - 构建 qmake 项目时如何使用 C++14 功能?

qt - QWidget setGeometry 在不使用 QLayout 的情况下显示

c++ - 如何以编程方式更改 Qt 中按钮的样式表?

c++ - 我可以在不创建类的情况下创建插槽吗?

c++ - 在 Linux 上使用 QtWebkit 和 OpenSSL 部署 Qt 应用程序时出现问题

c++ - 如果过滤器严格变窄,避免对 QSortFilterProxyModel::filterAcceptsRow() 的冗余调用

Qt:在QDrag的QMimeData中发送QPixmap?