私の質問はQtとそのQAbstractItemModelについてです。
std::map<stringclass, double>
Qtウィジェットに表示したい文字列とdouble()のマップがあります。そのためにQTableViewを使用することもできますが、マップのキーが「 」で始まる複数の文字列、さらにabc.def.ghi
は「」で始まる複数の文字列が存在する可能性があるという事実を利用したいと思います。abc.def
abc
そこで、 QTreeViewでアイテムを表示するようにツリーデータモデルを設定したいと思います。
(-) abc
|--(-)def
|--ghi 3.1415
|--jkl 42.0815
|--(+)pqr
|--(+)xyz
私の鍵はstd::map
ツリーの葉です。他のすべてのノードは、ユーザーの便宜のために折り畳みをサポートするための一時的で補助的な構造になります。
残念ながら、メソッド、、、rowCount
およびにはconst-modifiersがあるため、QAbstractItemModel派生内のヘッダーの補助データ構造を単純に設定して、そのデータ構造を変更することはできません。index
columnCount
data
そのためのベストプラクティスは何でしょうか?自分std::map
とQAbstractItemModelの間に別のクラスレイヤーを設定する必要がありますか、それともこれを行うためのよりスマートな方法がありますか?
編集1:QTreeViewが表示および使用されているstd::map
間に変更される可能性があるため、補助ノードが破棄されて再構築される可能性があります。私の仮定は、これを処理する最良の方法はQAbstractItemModelを再構築することです-または、単にそのモデルを破棄して、新しく構築されたモデルをQTreeViewに割り当てる必要がありますか?その場合、メソッドの定数に煩わされることなく、コンストラクター内のすべてのノードをセットアップできたと思います。