From 280c75090cb518f0f1a4e2b470a7722f95b9c9ab Mon Sep 17 00:00:00 2001 From: Arno Date: Sat, 17 Feb 2018 19:29:41 +0100 Subject: Make filtering useful Add a custom QSortFilterProxyModel which filterAcceptsRow() returns true if the uppermost parent matches the filter RegExp. --- collectionwidgetproxy.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 collectionwidgetproxy.cpp (limited to 'collectionwidgetproxy.cpp') diff --git a/collectionwidgetproxy.cpp b/collectionwidgetproxy.cpp new file mode 100644 index 0000000..b3427b2 --- /dev/null +++ b/collectionwidgetproxy.cpp @@ -0,0 +1,20 @@ +#include + +#include "collectionwidgetproxy.h" + +CollectionWidgetProxy::CollectionWidgetProxy(QObject *parent) : QSortFilterProxyModel(parent) { +} + +bool CollectionWidgetProxy::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const { + const QStandardItemModel *srcM = qobject_cast(sourceModel()); + QModelIndex rootIdx = srcM->invisibleRootItem()->index(); + QModelIndex curIdx = srcM->index(source_row, 0, source_parent); + if(curIdx == rootIdx){ + return true; + } + while(curIdx.parent() != rootIdx){ + curIdx = curIdx.parent(); + } + QString cur = curIdx.data().toString(); + return cur.contains(filterRegExp()); +} -- cgit v1.2.3-70-g09d2