私はProductオブジェクトのリストを(行として)持っています。各オブジェクトには、商品ID、製品ファミリなどのいくつかのデータフィールドが列としてあります。私は、QAbstractTableModelをサブクラス化するテーブルモデルを作成し、そのデータをQTableViewに表示することができました。Qtモデルのツリービューとテーブルビュー
私が望むのは、ツリーのような構造でモデルの「グループ化」ビューを提供することです。たとえば、製品をファミリIDでグループ化したいので、ツリーにはグループ(ファミリID)とその子がそのファミリIDを持つ製品である必要があります。
アイデア?
PS: 複数のグループ(家族のIDを有するグループ、および別の列でグループにそれらを、など)の必要性は、モデルが木でなければならないことを私に示しています。ルートノードはグループを示し、子はグループメンバーです。複数のグループ化は、複数レベルのツリーによって実現できます。
その後、私の変換の質問は以下の通りです:どのように私は(与えられたレベルで)のみのツリーの葉を表示する特殊なQTableViewクラスを実装することができますか?
私はtableviewでsetRootIndexを使うことができますが、何も解決しません。他の葉は表示されません。実際には葉は実際のオブジェクトです。
Iは少し掘り、各行と列を表示する際QTableView :: paintEventで、実際のアイテムのようなフェッチされることが見出された:
CONST QModelIndexインデックス= D->モデル - >インデックス(行、col、d->ルート);
ここで、d-> root()はsetRootIndex()によって与えられるルートノードです。これはツリートラバーサルコードに埋め込まれていなければならず、すべてがうまくいくはずです。しかし、私はどのようにpaintEventメソッド全体を再実装するのを避けることができますか?あなたはQTreeWidgetが最も簡単なルートであるかもしれないしたいどのくらいのカスタマイズによっては
ソート順序が変更されたときに同じように(ファミリIDでの場合と同じように)グループ化したい、またはグループ化を変更したいですか?最初のものはかなり簡単で、2番目のものはそうではありません。 –
私は単純なツリーモデルを作成し、それを異なるビューに設定しました。下の例は、ツリービューをどのように表示したいかを示していますが、テーブルビューではファミリではない製品が表示されます。 テーブルビューにモデルの2番目のレベルのノードが表示されるように設定するにはどうすればよいですか? コードはここにあります: http://www.stud.u-szeged.hu/Veress.Krisztian/main.cpp –
ここにあなたのコードを掲載すれば、それは検索可能になり、すべて見ることができます –