0

追加、名前変更、その他の操作を行うときに、常にツリーノードの下で自動的に並べ替えられるアイテムを使用してツリーを構築したいと思います。std::setは私のデータコンテナの良い候補のようです。ただし、ツリーアイテムはインデックスまたは行番号を介してアクセス、挿入、または削除されるため、QtツリーはベクトルまたはQList(ポインターベクトル)を優先するようです。セット内のアイテムのインデックスを計算するために、std::distanceのような関数を使用しています。しかし、私はそれが非常に遅いと思います(テストされていません)。Qtツリーモデルをstd::setで機能させるための良い方法はありますか、それともデータにベクトルを使用する必要がありますか、それを行うために新しいコンテナーを開発する必要がありますか?どうもありがとう!

答えを見つける:boost :: container::flat_setを使用します。ありがとう。

4

2 に答える 2

2

QSetは、この目的には適していません。インデックスベースのアクセスを提供しないだけでなく、完全に順序付けられていません。つまり、トラバーサルの順序がまったく保証されていません。Qtアイテムモデルで動作させるための賢明な方法はありません。QListを使用して、値が自分で一意であることを確認する方がはるかに良いでしょう。

于 2013-01-02T17:14:43.073 に答える
0

おそらくQTreeViewを使用し、QAbstractItemModelをサブクラス化して、必要なデータソースを使用できるようにする必要があります。

この質問を参照してください:ツリービューのQtモデルの作成

于 2013-01-02T15:49:17.260 に答える