在QTableView中可以使用QSortFilterProxyModel来过滤model的数据,可以通过setFilterKeyColumn(int colnum)设置需要过滤的列,当设置为-1时则过滤对象为所有列,但是此种方式只要某一列中有符合条件的数据就会被显示出来
因此我们可以重写QSortFilterProxyModel的filterAcceptsRow(int source_row, const QModelIndex &source_parent)方法实现同时过滤指定多列的数据
效果如下:(源码链接在文末)

关键代码:


void MultipleColSortFilterProxyModel::setFilterKeyColumn(int column)
{m_column = column;QSortFilterProxyModel::setFilterKeyColumn(column);
}void MultipleColSortFilterProxyModel::setFilterMap(QMap<int,QString> &strlist)
{m_FilterMap = strlist;
}bool MultipleColSortFilterProxyModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const
{if(m_column == -1){QStringList keys;int column_count = this->sourceModel()->columnCount(source_parent);for(int i =0;i<column_count;i++){QModelIndex index = this->sourceModel()->index(source_row,i,source_parent);keys.push_back(this->sourceModel()->data(index).toString());}for(auto it = m_FilterMap.begin();it!=m_FilterMap.end();it++){int col = it.key();QString str = it.value();if(str.isEmpty())continue;if(!keys.at(col).contains(str))return false;}return true;}else{return QSortFilterProxyModel::filterAcceptsRow(source_row,source_parent);}
}

使用:

m_SortModel->setFilterMap(map);
m_SortModel->setFilterKeyColumn(-1);
//map的内容 key:列号 val:过滤值

源码链接

QT重写QSortFilterProxyModel实现多列数据过滤相关推荐

  1. Qt工作笔记-自定义QSortFilterProxyModel实现多列分别过滤

    程序运行截图如下: 原理,重写QSortFilterProxyModel类中的filterAcceptsRow即可: 源码如下: mysortfilterproxymodel.h #ifndef MY ...

  2. Pandas常见的数据过滤方法、通过列条件筛选行数据

    Pandas常见的数据过滤方法.通过列条件筛选行数据 不废话了,直接看代码吧: 一般情况下,前面5种就覆盖了绝大多数需求 import pandas as pd import numpy as npd ...

  3. 解密上帝之手 - 阿里云HDB for PG特性(数据改命与任意列高效过滤)

    标签 PostgreSQL , metascan , 块级过滤 , 块级统计信息 , BATCH级统计信息 , brin , 区间索引 , 块级索引 , batch级索引 , 数据编排 , 存储计算分 ...

  4. QTreeView使用总结11,数据过滤,使用代理model,简单过滤

    1,简介 有时候需要对tree内的数据按一些条件进行过滤显示,比如按搜索条件过滤,这时候就用到了代理model. 通常使用Qt提供的 QSortFilterProxyModel 类,该类实现了常见的按 ...

  5. Qt学习之路_12(简易数据管理系统)

    原文地址为: Qt学习之路_12(简易数据管理系统) 前言 最近从大陆来到台湾,之间杂事很多,挤不出时间来更新博客- 这次主要是通过做一个简易的数据库管理系统,来学习在Qt中对数据库,xml,界面的各 ...

  6. python与R行列数据过滤(row column filtering):dplyr、 isnull、isna、drop、select、iloc、loc、isin、filter

    python与R行列数据过滤(row column filtering):dplyr. isnull.isna.drop.select.iloc.loc.isin.filter 很多工程师可能刚开始的 ...

  7. 【Android 内存优化】Android 工程中使用 libjpeg-turbo 压缩图片 ( JNI 传递 Bitmap | 获取位图信息 | 获取图像数据 | 图像数据过滤 | 释放资源 )

    文章目录 一.Bitmap 图像数据处理 二.Java 层 Bitmap 对象转为 JNI 层 bitmap 对象 三.获取 bitmap 中的图像数据 四.过滤 bitmap 中的图像数据 ( 获取 ...

  8. python分组求和_Python学习笔记之pandas索引列、过滤、分组、求和功能示例

    本文实例讲述了Python学习笔记之pandas索引列.过滤.分组.求和功能.分享给大家供大家参考,具体如下: 前面我们已经把519961(基金编码)这种基金的历史净值明细表html内容抓取到了本地, ...

  9. Aspose Cells 控件如何实现数据过滤(附代码和下载地址)

    Aspose Cells 是一款操作和处理以及转换Excel文件的类库,支持.NET和JAVA版,几乎所有Excel能实现的功能,Aspose Cells都可以实现,在Excel中经常会用到数据过滤, ...

最新文章

  1. 12.MySql关于获取当前时间的三个函数
  2. Nature子刊:整合宏基因组、代谢组和表型分析的的计算框架
  3. halcon/c++接口基础 之异常处理
  4. php_os用法,golang中os包用法
  5. r语言代码html,R语言学习笔记-内附实例及代码
  6. 画面每秒传输帧数是什么意思
  7. 浅谈面试中常考的两种经典布局——圣杯与双飞翼 1
  8. 50、多线程创建的三种方式之实现Runnable接口
  9. CSS的三种引入方式(行内样式、内部样式、外部样式)
  10. 用计算机术语写诗,网上盛行写诗软件 电脑作诗毫无逻辑令人喷饭
  11. SPLUS软件授权管理必知
  12. excel表格如何画斜线并写字
  13. 如何查看当前位置显存使用情况
  14. java毕业生设计原创网络文学管理系统计算机源码+系统+mysql+调试部署+lw
  15. 向量相似度度量(二):EMD (Earth Mover's Distance)的MATLAB对照实现
  16. 激励帖 冲呀 dreamer
  17. MySQL学习笔记04-DDL语句学习
  18. 多态性(一)——静态多态性
  19. 蒂特ft232_芯片资料-FT232.pdf
  20. HAC集群添加新节点

热门文章

  1. module.exports 和 exports 、export default 、export、require 、 inport 的区别
  2. 正整数前n项平方和与立方和的推导
  3. 解决OPPO手机adb调试找不到设备
  4. [元带你学NVMe协议] NVMe协议的命令
  5. 听云重磅发布 [2014中国移动应用性能管理白皮书]
  6. Centos7下Nginx代理和二级域名配置
  7. 抢占Z世代心智 汽车行业不可错过的B站
  8. 怎么使用计算机操作鼠标,用鼠标按回车 - 电脑操作 - 其它经验分享 - KK的小故事...
  9. 【产品经理】常用需求优先级评估模型
  10. 物联网-计算机网络与互联网技术的发展