2017-01-16 26 views
0

私のアプリケーションはツールライブラリマネージャです。リストとツールのリストを含むツリービューがあります。また、ツールのリストを表示するテーブルビューもあります。QtAbstractItemModel。 QtreeViewとQtableViewを併用する

ツリービューのリストをクリックすると、テーブルビューに子リストが表示されます。ツリー内の1つのツールをクリックすると、ウィジェットを切り替えてツールの編集フォームを表示します。

ツリービューで選択したノードの子のみにテーブルビューを限定するにはどうすればよいですか?

私のデータモデルはカスタムqAbstractItemModelです。

答えて

-1

これは私自身の質問に対する完全な答えですが、私ははるかに近いですか?テーブルビューでは、setRootIndex()を呼び出してqTreeViewから現在の項目を渡すことができます。これは、現在のツリー項目の子のみをテーブルリストに表示するために機能します。

私にとっては、フィルタリングしたいツールと子リストの両方が表示されていますが、それは別の問題だと思います。

+0

別々の回答を作成するのではなく、答えにあなたのコメントを入れてください。どうも。 – NameRakes

+0

私のコメントは別の答えではありませんでした。それはまだ議論されていない新しい答えでした。 – sliptonic

+0

入手しました。ツリービューで選択したアイテムの下の子のみをテーブルビューでマッピングして表示するための戦略は何ですか? – NameRakes

0

私はと同じです。あなたの状況と同じではありません。私の経験を分かち合う前に、あなたのリスト/ツールを構成するアイテムからなるソートのデータベースがあると仮定します。

一つの可能​​な解決策は、2つのカスタムモデル、ツリービューに1つ(たとえば、MyTreeViewModel -> QAbstractItemModelQTreeViewに関連付けられている)と(QTableViewに関連したMyTableViewModel -> QAbstractItemModel、)テーブルビューのための1つを作成することです。

同じエージェントがデータベースで作業している2つのカスタムモデルが必要です。 のキーの相違点は、ツリービューモデルがデータベース全体、およびサブセットのみを持つテーブルビューモデル(つまり、メインリスト内の選択した項目の子)と連動するということです。それをフルマッピングとデータベースの部分マッピングと考えることができます。

ユーザーがツリービューでノードの最上位リストをクリックすると、MyTableViewModelで取り上げられ、子のみが入力され、QTableViewで表示される信号を放射することができます。

同じエージェントが両方のモデルに対応しているため、あるモデルによる基礎となるデータへの変更を他のモデルに反映する必要があるため、データの完全性を維持することができます。このソリューションは、私のアプリケーションには本当にうまく機能しています。これもあなたのために働くことを願っています!

+0

@sliptonic異なるビュー(テーブル、ツリーなど)はすべて**タイプ**のビューです。あなたの場合、*すべてのデータ*を2つの異なるビューにマップしています。ビューがデータをフィルタリングする方法はありません*。私の解決策は、データをフィルタリングするモデルを作成することで問題を解決し、次に「QTableView」は縮小されたデータを表示します。 QTのモデル/ビュー/デリゲートアーキテクチャにより、私たちはそれを実現できます。私の解決策が正しくない場合、あなたの問題についての私の理解が間違っているか、正しい質問が提示されていません。 – NameRakes

+0

別のモデルを作成する場合と比較して、ビューに表示されるデータを簡単にフィルタリングする方法が見つかった場合は、ここに投稿してください。ありがとう。 – NameRakes