4

ある要素が別の要素を参照できるツリーを構築したいと考えています。私が構築したいツリーは次のようなものです:

A
|--- B
|--- C
|    |--- D
|    |--- E
|
|--- F
     |--- P    //this is a "pointer" to C
          |--- D   //first child of C
          |--- E   //second child of C

私の質問に関してこれこれを見つけましたが、そこには解決策が見つかりませんでした。

問題は、 my に parent() を実装することQAbstractItemModelです。要素をコピーすることはできません。大規模なサブツリーになる可能性があります (また、要素が変更されたときにそれらを同期させたい)。

アイテムはモデル内に複数の親を持つことができます (実際の親と、現在それを指しているアイテム)。現在正しい親を特定するにはどうすればよいですか? 現在、 にItem*格納されているだけですが、が現在QModelIndexある場合、インデックスが要素の下または下のどちらを意味するのかわかりません。Item*DDCP

Qt アイテム モデルで、この 1 対 n の親子マッピングを回避する何らかの方法があることを願っています。これを行う何らかの方法があることを願っています。それ以外の場合は、回避したい独自のウィジェットを実装する必要があります。

4

3 に答える 3

2

このためにカスタムウィジェットを作成する必要はありません。

Items1つの解決策は、モデルの各エントリがItem*ツリー内の位置を追跡するトークンだけでなく、トークンも保持するように、をラップすることです。各ノードは個別のエンティティになりましたが(簡単に実装できるようにparent())、複数のノードが同じを参照できますItem

于 2012-10-01T16:55:28.750 に答える
0

おかげさまで、私は複数の親を持つアイテムの1つのツリービューを実装するだけです。Tom Wが言ったように、モデルデータをtreeitemにラップします。

于 2012-12-16T13:02:21.683 に答える
0

アイテムごとに、その親へのポインターを格納できます。ノードに子を追加するthisと、コンストラクターへのパラメーターとしてへの参照を指定でき、アイテムの親をその参照に設定できます。

于 2012-10-01T17:14:05.453 に答える