我正在查看示例here,我遇到了这个例子
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
对象的声明位置和来自哪里?
答案 0 :(得分:0)
Qt docs说关于sourceModel()函数:
“返回包含通过代理模型可用的数据的模型。”。
它内部存储在代理模型中,是QAbstractProxyModel类的成员函数。