Я работаю над подклассом QAbstractItemModel
, который подключается к QTreeView
. Он имеет рекурсивную структуру типа Name = Value
- любой индекс может иметь собственное поддерево. Это нормально для левой стороны, потому что почти все древовидные представления работают именно так. Проблема в том, что иногда мне нужно поддерево только с правой стороны - список значений. Поскольку у меня это есть прямо сейчас, кажется, что это должно работать, но Qt никогда не вызывает rowCount()
для правой стороны и никогда не понимает, что там должно быть поддерево.
Решение, которое у меня есть прямо сейчас, в основном состоит в том, чтобы создать для этого отдельную модель и использовать setIndexWidget
для создания отдельного древовидного представления каждый раз, когда это происходит. Это нормально, но мне бы очень хотелось, чтобы поддеревья отображались справа, без необходимости разбрасывать древовидные представления повсюду. Моя модель отвечает, что там есть поддеревья, но Qt никогда их не запрашивает.
Если это немного неясно, это основная идея того, чего я хочу достичь:
- Root |
- Name 1 | Value
Name 2 | - Compound Value
| Sub-value 1
| Sub-value 2
Name 3 | + Compound Value (collapsed)
+ Name 4 | Value
Как бы то ни было, составные значения не получат рядом с ними +
и -
, потому что Qt никогда не вызывает hasChildren()
или rowCount()
в этом столбце, даже если моя модель вернет, что да, есть дочерние элементы, если бы об этом спросили.
Если мне придется дать ему представление в виде поддерева, это нормально. Я просто хочу быть уверен, что нет лучшего способа сделать это в первую очередь.