Я перешел к примеру здесь, и я наткнулся на этот пример
bool MySortFilterProxyModel::lessThan(const QModelIndex &left,
const QModelIndex &right) const
{
QVariant leftData = sourceModel()->data(left);
QVariant rightData = sourceModel()->data(right);
if (leftData.type() == QVariant::DateTime) {
return leftData.toDateTime() < rightData.toDateTime();
} else {
QRegExp *emailPattern = new QRegExp("([\\w\\.]*@[\\w\\.]*)");
QString leftString = leftData.toString();
if(left.column() == 1 && emailPattern->indexIn(leftString) != -1)
leftString = emailPattern->cap(1);
QString rightString = rightData.toString();
if(right.column() == 1 && emailPattern->indexIn(rightString) != -1)
rightString = emailPattern->cap(1);
return QString::localeAwareCompare(leftString, rightString) < 0;
}
}
Хотя я понимаю пример, я не понимаю, где sourceModel
объект sourceModel
и откуда он появился?
Qt сообщает о функции sourceModel():
"Возвращает модель, содержащую данные, доступные через прокси-модель".
Он хранится внутри прокси-модели и является функцией-членом класса QAbstractProxyModel.
sourceModel()
: «Возвращает модель, содержащую данные, доступные через модель прокси». Он хранится внутри модели прокси.