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
parent
999ba23946
commit
b3bbba7b87
|
|
@ -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).
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue