Требование в первую очередь для поддержки деревьев. Я не могу сказать вам причину, так как я не разработчик Qt ... Я только использую материал. Однако, если вы не работаете с деревьями, вы, вероятно, могли бы использовать один из более настроенных классов моделей и не иметь дело с дополнительными расходами на предоставление родителя. Я считаю, что и QAbstractListModel
, и QAbstractTableModel
обрабатывают родительскую часть сами, что позволяет вам просто беспокоиться о данных, которые вы хотите.
Что касается деревьев, я подозреваю, что одной из причин, по которой им нужен родитель, является то, что они стараются только запрашивать информацию, которую им нужно извлечь. Не зная всех элементов дерева (например, если оно не было развернуто), установить абсолютную позицию данного элемента в дереве становится намного сложнее.
Что касается использования indexOf(item)
в родительской функции, рассматривали ли вы вопрос об использовании QModelIndex
internalId
или internalPointer
? Я предполагаю, что они доступны в PyQt ... они могут использоваться вашей моделью для отслеживания информации об индексе. Вы могли бы использовать это для сокращения усилий по поиску индекса родителя.