Hello, I've been using kde's kitemmodels library to make a content explorer.
I have two panels, the left one which is a QTreeView that shows a folder tree structure and the right one which is a QListView that shows a list of files and folders from the current selected folder in the left panel, ignoring folder structure. The list view can then be filtered with a search box. Example use case: Left - Folder1 - Folder2 (selected) o Folder3 § File1 Right - Folder3 - File1 The way I wanted to do this was using the same source model for both panels, using proxy models to show whatever I want in each of the panels. The kitemmodels lib is great for this. The structure looks like this (mailing list friendly, indentation marks model ancestry): - Source Model (modeled as a tree). o Left QSortFilterProxyModel o KSelectionProxyModel § KDescendantsProxyModel - set to SubTreesWithoutRoots · Right QSortFilterProxyModel Everything works great, except when I insert rows in the source model while there is an active filter in the right QSortFilterProxyModel, in the filterAcceptsRow. It looks like this bool RightSortFilterProxyModel::filterAcceptsRow(int source_row, const QModelIndex& source_parent) const { Q_ASSERT(!source_parent.isValid()); // we are filtering a list QModelIndex sourceIndex = sourceModel()->index(source_row, 0); if (!sourceIndex.isValid()) { return false; } QString key = sourceModel()->data(sourceIndex).toString(); return filterRegExp().isEmpty() ? true : key.contains(filterRegExp()); } When sourceModel()->data(sourceIndex) is called, I get an assert in the RightSortFilterProxyModel source model, the KDescendantsProxyModel: "Didn't find target row.", in its mapToSource function. When run in release, the list gets filled with a bunch of empty rows. The source index is not invalid and sourceModel()->rowCount() returns greater than 0. Am I doing something wrong in this filterAcceptsRow? The strange thing is that this works perfectly without the filter. Excuse me if this not the right mailing list for this, I found some questions related to this in qt-interest-old. Cheers, Rodrigo
_______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest