QSortFilterPtoxyModel中的sourceModel属性 - 需要了解此代码

时间:2013-11-28 21:13:44

标签: c++ qt

我正在查看示例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对象的声明位置和来自哪里?

1 个答案:

答案 0 :(得分:0)

Qt docs说关于sourceModel()函数:

  

“返回包含通过代理模型可用的数据的模型。”。

它内部存储在代理模型中,是QAbstractProxyModel类的成员函数。