Examples: fix wrong QRegExp in Custom Sort/Filter Model Example

Fix wrong QRegExp in Custom Sort/Filter Model Example and replace it
with QRegularExpression.

Task-number: QTBUG-61129
Change-Id: I515474ee6985d36195d90dcd93876ba28a83bccc
Reviewed-by: André Hartmann <aha_1980@gmx.de>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Samuel Gaist <samuel.gaist@edeltech.ch>
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
bb10
Christian Ehrlicher 2018-03-11 18:01:32 +01:00 committed by André Hartmann
parent 999ba23946
commit b3bbba7b87
2 changed files with 19 additions and 14 deletions

View File

@ -121,14 +121,14 @@
\snippet itemviews/customsortfiltermodel/mysortfilterproxymodel.cpp 6
We use QRegExp to define a pattern for the addresses we are looking
for. The QRegExp::indexIn() function attempts to find a match in
the given string and returns the position of the first match, or
-1 if there was no match. If the given string contains the
pattern, we use QRegExp's \l {QRegExp::cap()}{cap()} function to
retrieve the actual address. The \l {QRegExp::cap()}{cap()}
function returns the text captured by the \e nth
subexpression. The entire match has index 0 and the parenthesized
We use QRegularExpression to define a pattern for the addresses we
are looking for. The \l {QRegularExpression::match()}{match()} function
returns a QRegularExpressionMatch object which contains the result of
the matching. If there is a match,
\l {QRegularExpressionMatch::hasMatch()}{hasMatch()} returns true. The
result of the match can be retrieved with QRegularExpressionMatch's
\l {QRegularExpressionMatch::captured()}{captured()} function.
The entire match has index 0 and the parenthesized
subexpressions have indexes starting from 1 (excluding
non-capturing parentheses).

View File

@ -101,15 +101,20 @@ bool MySortFilterProxyModel::lessThan(const QModelIndex &left,
if (leftData.type() == QVariant::DateTime) {
return leftData.toDateTime() < rightData.toDateTime();
} else {
static QRegExp emailPattern("[\\w\\.]*@[\\w\\.]*)");
static const QRegularExpression emailPattern("[\\w\\.]*@[\\w\\.]*");
QString leftString = leftData.toString();
if(left.column() == 1 && emailPattern.indexIn(leftString) != -1)
leftString = emailPattern.cap(1);
if (left.column() == 1) {
const QRegularExpressionMatch match = emailPattern.match(leftString);
if (match.hasMatch())
leftString = match.captured(0);
}
QString rightString = rightData.toString();
if(right.column() == 1 && emailPattern.indexIn(rightString) != -1)
rightString = emailPattern.cap(1);
if (right.column() == 1) {
const QRegularExpressionMatch match = emailPattern.match(rightString);
if (match.hasMatch())
rightString = match.captured(0);
}
return QString::localeAwareCompare(leftString, rightString) < 0;
}