diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2020-10-09 09:26:19 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2020-10-14 20:35:16 +0200 |
commit | d55940d7f61ff2ba6e4c5605ce343163c475c86c (patch) | |
tree | 1b72a0c7f38478298a533454f1088aa0179add93 /examples | |
parent | b0cd3bcec4317ed859ea13b3a2b33742c6ccecfe (diff) |
Brush up the basicsortfiltermodel example
- Add a clear button to the line edit
- Indicate invalid regular expressions
Change-Id: I1dbeaa0f9168224ccb9134c0c1fe281da14dcbce
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Diffstat (limited to 'examples')
-rw-r--r-- | examples/widgets/itemviews/basicsortfiltermodel/window.cpp | 26 |
1 files changed, 25 insertions, 1 deletions
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() |