Я работаю над подклассом 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()
в этом столбце, даже если моя модель выдаст это да, есть дети, если бы их спросили.
Если мне в конечном итоге придется дать ему представление поддерева, это нормально. Я просто хотел бы убедиться, что нет лучшего способа сделать это в первую очередь.