[英]Qt tree model with items with multiple parents
我想構建一個樹,其中一個元素可以引用另一個元素。 我想要構建的樹是這樣的:
A
|--- B
|--- C
| |--- D
| |--- E
|
|--- F
|--- P //this is a "pointer" to C
|--- D //first child of C
|--- E //second child of C
問題是在我的QAbstractItemModel
實現parent()。 復制元素是不可能的,它可能是一個巨大的子樹(我也希望它們在更改時保持同步)。
一個項目在模型中可以有多個父項(真正的父項,以及當前指向它的項目),如何確定當前正確的父項? 目前我只有一個Item*
存儲在QModelIndex
,但是當Item*
當前為D
我無法確定索引是指元素D
低於C
還是低於P
我希望有一些方法可以解決Qt項目模型中的這一個到n個父子映射。 我希望有一些方法可以做到這一點,否則我將需要實現自己的小部件,我非常希望避免。
您不需要為此編寫自定義小部件。
一種解決方案是包裝您的Items
,這樣模型中的每個條目不僅包含Item*
,還包含一些跟蹤其在樹中的位置的標記。 每個節點現在都是一個單獨的實體(因此您可以輕松實現parent()
),但多個節點可以引用相同的Item
。
對於每個項目,您可以存儲指向其父項的指針。 當您添加一個孩子一個節點可以給你參考this
作為參數傳遞給它的構造函數,你可以設置的項目的父是參考。
謝謝大家,我只是實現了一個包含多個父項的項目樹視圖。 正如Tom W所說,將我的模型數據包裝到treeitem。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.