我正在研究一個QAbstractItemModel
的子類,它插入QTreeView
。它有一個遞歸的Name = Value
類型結構 - 任何索引都可以有自己的子樹。這在左側是很好的,因爲幾乎所有的樹都是以這種方式工作的。問題是有時候我只想在右側使用一個子樹 - 一個值列表。正如我現在所看到的,它似乎應該工作,但Qt從來沒有打電話rowCount()
右側,並從來沒有意識到,應該有一個子樹那裏。多列QTreeView/QAbstractItemModel子樹
我現在所擁有的解決方案基本上是爲此創建一個單獨的模型,並在每次發生這種情況時使用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()
,即使我的模型返回的結果是肯定的,但如果有人問到,則會有孩子。如果我最終不得不給它一個子樹視圖,那很好。我只想確定沒有更好的方法來做到這一點。
你有沒有找到解決方案?我有類似的情況,但抽象的項目模型似乎只允許第一列下的子樹。 – subhacom 2012-12-06 11:56:38
我通過在第二列中放置單獨的樹視圖來解決它,如果我需要它擴展。不是最優雅的方法,但快速和容易。如果你希望它看起來無縫,你可能必須繼承QTreeView。自從去年5月份以來,我還沒有和Qt一起做過任何工作,所以我不能真正幫助過去。 – parkovski 2012-12-27 23:32:54