对tableview设置数据模型后,有时需要对数据模型里的数据进行排序、过滤显示之类的,这时需要把数据模型设置为排序模型的源如下:
ui->tableView->setModel(sortModel);
sortModel->setSourceModel(dataModel);
这时会出现一个问题是如何根据sortModel显示的索引找到dataModel中的索引等等一系列这方面问题可以从QSortFilterProxyModel的以下几个函数入手:
virtual QModelIndex mapFromSource(const QModelIndex &sourceIndex) const
virtual QItemSelection mapSelectionFromSource(const QItemSelection &sourceSelection) const
virtual QItemSelection mapSelectionToSource(const QItemSelection &proxySelection) const
virtual QModelIndex mapToSource(const QModelIndex &proxyIndex) const
virtual QModelIndexList match(const QModelIndex &start, int role, const QVariant &value, int hits = 1, Qt::MatchFlags flags = Qt::MatchFlags( Qt::MatchStartsWith | Qt::MatchWrap )) const