2009-11-05 2 views
2

У меня есть обычный QTreeView, настраиваемый QAbstractItemModel и настраиваемый QSortFilterProxyModel.Как я могу автообновить элемент в QTreeView, когда он фильтруется QSortFilterProxyModel?

Я переопределял QSortFilterProxyModel :: filterAcceptsRow, чтобы фильтровать элементы из моей модели так, как я хочу, однако теперь я хочу, чтобы эти фильтрованные элементы были расширены в древовидной структуре.

Очевидным решением было излучение сигнала QSortFilterProxyModel :: filterAcceptsRow(), когда был найден признанный элемент, затем подключите этот сигнал к QTreeView :: expand().

Однако QSortFilterProxyModel :: filterAcceptsRow() является const, поэтому я не могу испускать сигнал из этого метода. QSortFilterProxyModel не имеет никаких других сигналов, которые бы мне помогли .. и я начинаю думать, что мне придется подклассифицировать QTreeView, чего я бы предпочел не делать (меньше кода == лучше).

Итак, есть ли способ авторасширения тех элементов, которые принимает модель filtermodel?

ответ

2

QTreeView имеет слот «expandAll», который можно вызвать после установки модели. Я бы подумал, что это должно делать то, что вы хотите.