summaryrefslogtreecommitdiffstats
path: root/examples/widgets/itemviews
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2020-10-09 09:26:19 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2020-10-14 20:35:16 +0200
commitd55940d7f61ff2ba6e4c5605ce343163c475c86c (patch)
tree1b72a0c7f38478298a533454f1088aa0179add93 /examples/widgets/itemviews
parentb0cd3bcec4317ed859ea13b3a2b33742c6ccecfe (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/widgets/itemviews')
-rw-r--r--examples/widgets/itemviews/basicsortfiltermodel/window.cpp26
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()