で現在表示されているアイテムのリストを取得する方法はありますQAbstractItemView
か? また、可能であれば、このリストの変更に関する通知を受け取ります。
Upd:ではなく、単純でない構造についてQAbstractItemView
、またはそれを使用して正確に質問しています。QTreeView
QTableView
Upd2: チェックボックス付きのツリー ビュー モデルを実装しています。次の動作が必要です(チェック/チェック解除も同じ):
- チェックボックスの1つがチェックされている場合 - すべての子をチェックする必要があります
- すべての子チェックボックスがチェックされている場合、親チェックボックスもチェックする必要があります。親の親などについても同じです...
チェック状態は外部データ ソースによって監視/変更されるため、変更されたすべての子/親を更新するメカニズムが必要です。更新のためにdataChanged
変更されたすべてのリストを作成するのは非常に広大であるため、シグナルは私にとって十分ではありません。QModelIndex
また、新しいデータはすべて から取得されるため、まったく必要ありませんQAbstractItemModel::data
。
すべてのアイテムを更新するための次の汚いハックを見つけましemit dataChanged( QModelIndex(), QModelIndex() );
たが、無効なインデックスについては文書化されていません。
したがって、表示されているすべてのアイテムを新しいデータで強制的に再描画する方法が必要です。