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. --- collectionwidget.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'collectionwidget.cpp') diff --git a/collectionwidget.cpp b/collectionwidget.cpp index 0066e22..af75520 100644 --- a/collectionwidget.cpp +++ b/collectionwidget.cpp @@ -7,13 +7,14 @@ #include #include "collectionwidget.h" +#include "collectionwidgetproxy.h" CollectionWidget::CollectionWidget(QWidget *parent) : QWidget(parent){ mView = new QTreeView; mModel = new QStandardItemModel(this); - mProxy = new QSortFilterProxyModel(this); - mProxy->setSourceModel(mModel); - mView->setModel(mProxy); + CollectionWidgetProxy *proxy = new CollectionWidgetProxy(this); + proxy->setSourceModel(mModel); + mView->setModel(proxy); mView->setSortingEnabled(true); mView->setAlternatingRowColors(true); QGroupBox *filterGB = new QGroupBox(tr("Filter")); @@ -22,10 +23,10 @@ CollectionWidget::CollectionWidget(QWidget *parent) : QWidget(parent){ filterGBL->addWidget(mFilter); QToolBar *filterTB = new QToolBar; QAction *clearFilter = new QAction(QIcon(":/clean_tampon.png"), tr("Clear filter"), this); - connect(clearFilter, &QAction::triggered, [this] { mFilter->clear(); proxy()->setFilterRegExp("");} ); + connect(clearFilter, &QAction::triggered, [this, proxy] { mFilter->clear(); proxy->setFilterRegExp("");} ); filterTB->addAction(clearFilter); QAction *activateFilter = new QAction(QIcon(":/stomp.png"), tr("Filter!"), this); - connect(activateFilter, &QAction::triggered, [this] { proxy()->setFilterRegExp(mFilter->text());} ); + connect(activateFilter, &QAction::triggered, [this, proxy] { proxy->setFilterRegExp(mFilter->text());} ); connect(mFilter, &QLineEdit::returnPressed, activateFilter, &QAction::trigger); filterTB->addAction(activateFilter); filterGBL->addWidget(filterTB); -- cgit v1.2.3-70-g09d2