我想構建一棵樹,其中一個元素可以引用另一個元素。樹我想打造的是 這樣的:具有多個父項的Qt樹模型
A
|--- B
|--- C
| |--- D
| |--- E
|
|--- F
|--- P //this is a "pointer" to C
|--- D //first child of C
|--- E //second child of C
我發現this和this關於我的問題,但是沒有解決發現那裏。
問題是在我的QAbstractItemModel
中實現parent()。複製元素是不可能的,它可能是一個巨大的子樹(我也希望它們在更改時同步)。
一個項目可以在模型中有多個父項(真正的父項以及當前指向它的項),我如何確定當前正確的父項? 目前我只是存儲在QModelIndex
的Item*
,但是當Item*
目前D
我無法找到索引是否意味着元素D
低於C
或低於P
。
我希望有一種方法可以解決這個問題,以便在Qt項目模型中進行父子映射。我希望有一些方法可以做到這一點,否則我將需要實現我自己非常想避免的自己的小部件。
是的,這應該工作。然而現在的問題是內存釋放。我不知道如何釋放這些標記,因爲QModelIndex沒有釋放內部指針() – ar31
您可以使用共享指針而不是原始指針來保存項目。當引用特定「Item」的最後一個節點被刪除時,它也會刪除該「Item」。 –
@ ar31,你的索引不應該_own_數據,它應該只引用它。你應該爲_data storage_使用一些內部結構。 – Lol4t0