⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mysortfilterproxymodel.cpp

📁 QT 开发环境里面一个很重要的文件
💻 CPP
字号:
/******************************************************************************** Copyright (C) 2006-2006 Trolltech ASA. All rights reserved.**** This file is part of the example classes of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file.  Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://www.trolltech.com/products/qt/opensource.html**** If you are unsure which license is appropriate for your use, please** review the following information:** http://www.trolltech.com/products/qt/licensing.html or contact the** sales department at sales@trolltech.com.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#include <QtGui>#include "mysortfilterproxymodel.h"MySortFilterProxyModel::MySortFilterProxyModel(QObject *parent)    : QSortFilterProxyModel(parent){}void MySortFilterProxyModel::setFilterMinimumDate(const QDate &date){    minDate = date;    filterChanged();}void MySortFilterProxyModel::setFilterMaximumDate(const QDate &date){    maxDate = date;    filterChanged();}bool MySortFilterProxyModel::filterAcceptsRow(int sourceRow,        const QModelIndex &sourceParent) const{    QModelIndex index0 = sourceModel()->index(sourceRow, 0, sourceParent);    QModelIndex index1 = sourceModel()->index(sourceRow, 1, sourceParent);    QModelIndex index2 = sourceModel()->index(sourceRow, 2, sourceParent);    return (sourceModel()->data(index0).toString().contains(filterRegExp())            || sourceModel()->data(index1).toString().contains(filterRegExp()))           && dateInRange(sourceModel()->data(index2).toDate());}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;    }}bool MySortFilterProxyModel::dateInRange(const QDate &date) const{    return (!minDate.isValid() || date > minDate)           && (!maxDate.isValid() || date < maxDate);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -