From d55940d7f61ff2ba6e4c5605ce343163c475c86c Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 9 Oct 2020 09:26:19 +0200 Subject: Brush up the basicsortfiltermodel example - Add a clear button to the line edit - Indicate invalid regular expressions Change-Id: I1dbeaa0f9168224ccb9134c0c1fe281da14dcbce Reviewed-by: Shawn Rutledge --- .../itemviews/basicsortfiltermodel/window.cpp | 26 +++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) (limited to 'examples/widgets') diff --git a/examples/widgets/itemviews/basicsortfiltermodel/window.cpp b/examples/widgets/itemviews/basicsortfiltermodel/window.cpp index 5957ea7a1a..3f22ab4f3c 100644 --- a/examples/widgets/itemviews/basicsortfiltermodel/window.cpp +++ b/examples/widgets/itemviews/basicsortfiltermodel/window.cpp @@ -52,6 +52,20 @@ #include "window.h" +static inline QColor textColor(const QPalette &palette) +{ + return palette.color(QPalette::Active, QPalette::Text); +} + +static void setTextColor(QWidget *w, const QColor &c) +{ + auto palette = w->palette(); + if (textColor(palette) != c) { + palette.setColor(QPalette::Active, QPalette::Text, c); + w->setPalette(palette); + } +} + Window::Window() { proxyModel = new QSortFilterProxyModel; @@ -70,6 +84,7 @@ Window::Window() filterCaseSensitivityCheckBox = new QCheckBox(tr("Case sensitive filter")); filterPatternLineEdit = new QLineEdit; + filterPatternLineEdit->setClearButtonEnabled(true); filterPatternLabel = new QLabel(tr("&Filter pattern:")); filterPatternLabel->setBuddy(filterPatternLineEdit); @@ -160,7 +175,16 @@ void Window::filterRegularExpressionChanged() if (!filterCaseSensitivityCheckBox->isChecked()) options |= QRegularExpression::CaseInsensitiveOption; QRegularExpression regularExpression(pattern, options); - proxyModel->setFilterRegularExpression(regularExpression); + + if (regularExpression.isValid()) { + filterPatternLineEdit->setToolTip(QString()); + proxyModel->setFilterRegularExpression(regularExpression); + setTextColor(filterPatternLineEdit, textColor(style()->standardPalette())); + } else { + filterPatternLineEdit->setToolTip(regularExpression.errorString()); + proxyModel->setFilterRegularExpression(QRegularExpression()); + setTextColor(filterPatternLineEdit, Qt::red); + } } void Window::filterColumnChanged() -- cgit v1.2.3