Фильтрация QTreeView с QSortFilterProxyModel
Форум — Development
Есть дерево вида:
Нода1
--Нода2
----Нода3 Значение1 Значение2
----Нода4 Значение3 Значение4
И так далее...
(Внешний вид дерева можно посмотреть тут)
Мне надо отфильтровать модель по различающимся значениям в одной строке. То есть, если Значение1 совпадает (равно) со Значением2, то эту строку пропускаем, если нет - выводим.
Есть пример кода:
class FindFilterProxyModel(QtCore.QSortFilterProxyModel):
def filterAcceptsRow(self, source_row, source_parent):
if (self.filterAcceptsRowItself(source_row, source_parent)):
return True
if (self.hasAcceptedChildren(source_row, source_parent)):
return True
return False
def filterAcceptsRowItself(self, source_row, source_parent):
return super(FindFilterProxyModel, self).\
filterAcceptsRow(source_row, source_parent)
def hasAcceptedChildren(self, source_row, source_parent):
model = self.sourceModel()
sourceIndex = model.index(source_row, 0, source_parent)
if not (sourceIndex.isValid()):
return False
childCount = model.rowCount(sourceIndex)
if (childCount == 0):
return False
for i in range (childCount):
if (self.filterAcceptsRowItself(i, sourceIndex)):
return True
if (self.hasAcceptedChildren(i, sourceIndex)):
return True
return False
Он рекурсивно сравнивает значения в первом столбце (использую для поиска). А мне требуется, чтобы сравнение шло по всем столбцам, кроме первого (как именно нужно переопределить filterAcceptsRow?).