В моей реализации виджета model
исходная модель (подкласс QAbstractItemModel
), proxy_model
(подкласс QSortFilterProxyModel) прокси и tree
(QTreeView) дерево, представляющее модель.
Я хочу скрыть первый столбец. Пробовал использовать tree.hideColumn(0)
, дерево отображается плоским.
- Если я создаю подкласс
filterAcceptsColumn
в прокси, чтобы вернуть True только для второго столбца, то строки не отображаются. Я считаю, что это связано с тем, что отношения родитель/потомок привязаны к первому столбцу в индексах, и когда прокси-сервер запрашивает количество строк для заданного индекса столбца 1, модель возвращает 0 (что является ожидаемым поведением в реализация модели, если я правильно понял). - Если я установлю
rowCount
для возврата значений, отличных от 0, в модели для индекса столбцов › 0, я смогу увидеть дерево и строки, но тогда модель не пройдет тестQAbstractItemModelTester
со следующей ошибкой:
qt.modeltest: FAIL! childIndex != childIndex1 () returned FALSE
Я хорошо понимаю, что в древовидной модели дочерний индекс должен быть привязан к одному родительскому индексу (первому столбцу). Но как я должен скрыть первый столбец в прокси-модели, если родительские дочерние отношения исходной модели не сохраняются прокси-сервером, если первый столбец отфильтрован? Я чувствую, что это ошибка прокси, или я что-то пропустил!
Кто-нибудь знает правильный способ фильтрации/скрытия первого столбца в древовидном представлении без потери родительской/дочерней информации и проверки реализации qmodel?
Спасибо !