summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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()