"Backend", 1, 0, "BookModel");//向qml注册类型 BookModel *bookModel = new BookModel();//这是自己定义的类 QSortFilterProxyModel *proxyModel = new QSortFilterProxyModel(); ...
在之前60.QT-QabstractTableModel模型、重写sort方法排序章节中,学习了如何用model,本章再来学习QSortFilterProxyModel代理 1. QsortFilterProxyModel介绍 QsortFilterProxyModel类用来为model和view之间提供强大的排序和过滤支持。 treeView->setModel(proxyModel); //在视图中安装代理 2.QSortFilterProxyModel自定义排序 自定义排序需要子类化QsortFilterProxyModel 然后通过QsortFilterProxyModel::setFilterKeyColumn(int)来过滤某一列. 如果要更改大小写匹配,可以通过QsortFilterProxyModel::sortCaseSensitivity()来设置.
这可以通过在同一模型上使用多个视图来实现,每个视图都使用QSortFilterProxyModel类的实例进行过滤。 QSortFilterProxyModel是负责过滤联系人的类。每个代理模型都使用QRegExp过滤掉不属于相应字母组的联系人。AddDialog类用于从用户那里获取地址簿的信息。
这是通过在同一个模型上使用多个视图实现的,每个视图都使用QSortFilterProxyModel类的一个实例进行过滤。 QSortFilterProxyModel是负责过滤每个联系人组的联系人的类。每个代理模型使用一个QRegExp来过滤不属于相应字母组的联系人。AddDialog类用于从用户获取地址簿的信息。 "^[%1].*").arg(itemTab), QRegularExpression::CaseInsensitiveOption); auto pProxyModel = new QSortFilterProxyModel * pSortProxyModel = static_cast<QSortFilterProxyModel*>(pTempView->model()); if (nullptr == pSortProxyModel * pSortProxyModel = static_cast<QSortFilterProxyModel*>(pTempView->model()); if (nullptr == pSortProxyModel
= QTableView() # Create QSortFilterProxyModels for each table view self.proxyModel1 = QSortFilterProxyModel () self.proxyModel2 = QSortFilterProxyModel() # Set the source model for the proxy models
column,order); std::sort(m_data.begin(), m_data.end(),comp); endResetModel(); } 第二种排序方法则是通过使用QsortFilterProxyModel 代理类实现排序,QsortFilterProxyModel类用来为model和view之间提供强大的排序和过滤支持,并且无需对模型中的数据进行任何转换,也无需对模型在中数据进行修改。 未完待续.下章学习:61.QT-QSortFilterProxyModel代理实现排序、过滤
QSqlTableModel 对SQL中的table进行封装 // QSqlRelationalTableModel 对带有foreign key的SQL table进行封装 // QSortFilterProxyModel
DataFileTab& obj); DataFileTab& operator=(const DataFileTab& obj); private: CustomItemModel* m_model; QSortFilterProxyModel