QTreeViewと2つのQSortFilterProxyModelベースのフィルターを使用しています。
QTreeViewに現在表示されているアイテムのリストを取得する必要があるため、選択したインデックスを取得し(-> selectionModel()-> selectedIndexes()を使用)、それらを単純な再帰関数に渡しますが、常にSIGSEGVを取得します。デバッグ時に、呼び出しスタックが終了する場所を見つけました— QVector::fillのどこかにあります。
多分私は何か間違ったことをしているのですか?インデックスを通過するmapToSource()
と、表示されたアイテムだけでなく、すべてのアイテムが取得されます。
イテレータ関数は単純です。
void CollectionTreeWidget::iterator(const QModelIndex & index, QModelIndexList & items)
{
int count = p->dateFilterProxy->rowCount(index);
for (int i=0; i<count; i++) {
QModelIndex t = index.child(i, 0);
iterator(t, items);
}
}
これは、 QTreeViewdateFilterProxy
モデルとして使用されるモデルです。呼び出し時にコードがクラッシュしrowCount
ます。