summaryrefslogtreecommitdiffstats
path: root/examples/widgets/itemviews
diff options
context:
space:
mode:
Diffstat (limited to 'examples/widgets/itemviews')
-rw-r--r--examples/widgets/itemviews/customsortfiltermodel/filterwidget.cpp20
-rw-r--r--examples/widgets/itemviews/customsortfiltermodel/filterwidget.h16
-rw-r--r--examples/widgets/itemviews/customsortfiltermodel/mysortfilterproxymodel.cpp4
-rw-r--r--examples/widgets/itemviews/customsortfiltermodel/window.cpp22
4 files changed, 40 insertions, 22 deletions
diff --git a/examples/widgets/itemviews/customsortfiltermodel/filterwidget.cpp b/examples/widgets/itemviews/customsortfiltermodel/filterwidget.cpp
index 302042a6b3..bfcc8f84fb 100644
--- a/examples/widgets/itemviews/customsortfiltermodel/filterwidget.cpp
+++ b/examples/widgets/itemviews/customsortfiltermodel/filterwidget.cpp
@@ -72,18 +72,18 @@ FilterWidget::FilterWidget(QWidget *parent)
menu->addSeparator();
m_patternGroup->setExclusive(true);
- QAction *patternAction = menu->addAction("Fixed String");
- patternAction->setData(QVariant(int(QRegExp::FixedString)));
+ QAction *patternAction = menu->addAction("Regular Expression");
patternAction->setCheckable(true);
patternAction->setChecked(true);
+ patternAction->setData(QVariant(int(RegularExpression)));
m_patternGroup->addAction(patternAction);
- patternAction = menu->addAction("Regular Expression");
+ patternAction = menu->addAction("Wildcard");
patternAction->setCheckable(true);
- patternAction->setData(QVariant(int(QRegExp::RegExp2)));
+ patternAction->setData(QVariant(int(Wildcard)));
m_patternGroup->addAction(patternAction);
- patternAction = menu->addAction("Wildcard");
+ patternAction = menu->addAction("Fixed String");
+ patternAction->setData(QVariant(int(FixedString)));
patternAction->setCheckable(true);
- patternAction->setData(QVariant(int(QRegExp::Wildcard)));
m_patternGroup->addAction(patternAction);
connect(m_patternGroup, &QActionGroup::triggered, this, &FilterWidget::filterChanged);
@@ -113,17 +113,17 @@ void FilterWidget::setCaseSensitivity(Qt::CaseSensitivity cs)
m_caseSensitivityAction->setChecked(cs == Qt::CaseSensitive);
}
-static inline QRegExp::PatternSyntax patternSyntaxFromAction(const QAction *a)
+static inline FilterWidget::PatternSyntax patternSyntaxFromAction(const QAction *a)
{
- return static_cast<QRegExp::PatternSyntax>(a->data().toInt());
+ return static_cast<FilterWidget::PatternSyntax>(a->data().toInt());
}
-QRegExp::PatternSyntax FilterWidget::patternSyntax() const
+FilterWidget::PatternSyntax FilterWidget::patternSyntax() const
{
return patternSyntaxFromAction(m_patternGroup->checkedAction());
}
-void FilterWidget::setPatternSyntax(QRegExp::PatternSyntax s)
+void FilterWidget::setPatternSyntax(PatternSyntax s)
{
const QList<QAction*> actions = m_patternGroup->actions();
for (QAction *a : actions) {
diff --git a/examples/widgets/itemviews/customsortfiltermodel/filterwidget.h b/examples/widgets/itemviews/customsortfiltermodel/filterwidget.h
index 70214b862e..0404d670b2 100644
--- a/examples/widgets/itemviews/customsortfiltermodel/filterwidget.h
+++ b/examples/widgets/itemviews/customsortfiltermodel/filterwidget.h
@@ -52,28 +52,32 @@
#define FILTERWIDGET_H
#include <QLineEdit>
-#include <QRegExp>
QT_BEGIN_NAMESPACE
class QAction;
class QActionGroup;
QT_END_NAMESPACE
-Q_DECLARE_METATYPE(QRegExp::PatternSyntax)
-
class FilterWidget : public QLineEdit
{
Q_OBJECT
Q_PROPERTY(Qt::CaseSensitivity caseSensitivity READ caseSensitivity WRITE setCaseSensitivity)
- Q_PROPERTY(QRegExp::PatternSyntax patternSyntax READ patternSyntax WRITE setPatternSyntax)
+ Q_PROPERTY(PatternSyntax patternSyntax READ patternSyntax WRITE setPatternSyntax)
public:
explicit FilterWidget(QWidget *parent = nullptr);
Qt::CaseSensitivity caseSensitivity() const;
void setCaseSensitivity(Qt::CaseSensitivity);
- QRegExp::PatternSyntax patternSyntax() const;
- void setPatternSyntax(QRegExp::PatternSyntax);
+ enum PatternSyntax {
+ RegularExpression,
+ Wildcard,
+ FixedString
+ };
+ Q_ENUM(PatternSyntax)
+
+ PatternSyntax patternSyntax() const;
+ void setPatternSyntax(PatternSyntax);
signals:
void filterChanged();
diff --git a/examples/widgets/itemviews/customsortfiltermodel/mysortfilterproxymodel.cpp b/examples/widgets/itemviews/customsortfiltermodel/mysortfilterproxymodel.cpp
index fd17876f2b..da31f8e361 100644
--- a/examples/widgets/itemviews/customsortfiltermodel/mysortfilterproxymodel.cpp
+++ b/examples/widgets/itemviews/customsortfiltermodel/mysortfilterproxymodel.cpp
@@ -83,8 +83,8 @@ bool MySortFilterProxyModel::filterAcceptsRow(int sourceRow,
QModelIndex index1 = sourceModel()->index(sourceRow, 1, sourceParent);
QModelIndex index2 = sourceModel()->index(sourceRow, 2, sourceParent);
- return (sourceModel()->data(index0).toString().contains(filterRegExp())
- || sourceModel()->data(index1).toString().contains(filterRegExp()))
+ return (sourceModel()->data(index0).toString().contains(filterRegularExpression())
+ || sourceModel()->data(index1).toString().contains(filterRegularExpression()))
&& dateInRange(sourceModel()->data(index2).toDate());
}
//! [3]
diff --git a/examples/widgets/itemviews/customsortfiltermodel/window.cpp b/examples/widgets/itemviews/customsortfiltermodel/window.cpp
index 3356c971ad..3423ac4ee9 100644
--- a/examples/widgets/itemviews/customsortfiltermodel/window.cpp
+++ b/examples/widgets/itemviews/customsortfiltermodel/window.cpp
@@ -148,10 +148,24 @@ void Window::setSourceModel(QAbstractItemModel *model)
//! [8]
void Window::textFilterChanged()
{
- QRegExp regExp(filterWidget->text(),
- filterWidget->caseSensitivity(),
- filterWidget->patternSyntax());
- proxyModel->setFilterRegExp(regExp);
+ FilterWidget::PatternSyntax s = filterWidget->patternSyntax();
+ QString pattern = filterWidget->text();
+ switch (s) {
+ case FilterWidget::Wildcard:
+ pattern = QRegularExpression::wildcardToRegularExpression(pattern);
+ break;
+ case FilterWidget::FixedString:
+ pattern = QRegularExpression::escape(pattern);
+ break;
+ default:
+ break;
+ }
+
+ QRegularExpression::PatternOptions options = QRegularExpression::NoPatternOption;
+ if (filterWidget->caseSensitivity() == Qt::CaseInsensitive)
+ options |= QRegularExpression::CaseInsensitiveOption;
+ QRegularExpression regularExpression(pattern, options);
+ proxyModel->setFilterRegularExpression(regularExpression);
}
//! [8]