QT重写QSortFilterProxyModel实现多列数据过滤
在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实现多列数据过滤相关推荐
- Qt工作笔记-自定义QSortFilterProxyModel实现多列分别过滤
程序运行截图如下: 原理,重写QSortFilterProxyModel类中的filterAcceptsRow即可: 源码如下: mysortfilterproxymodel.h #ifndef MY ...
- Pandas常见的数据过滤方法、通过列条件筛选行数据
Pandas常见的数据过滤方法.通过列条件筛选行数据 不废话了,直接看代码吧: 一般情况下,前面5种就覆盖了绝大多数需求 import pandas as pd import numpy as npd ...
- 解密上帝之手 - 阿里云HDB for PG特性(数据改命与任意列高效过滤)
标签 PostgreSQL , metascan , 块级过滤 , 块级统计信息 , BATCH级统计信息 , brin , 区间索引 , 块级索引 , batch级索引 , 数据编排 , 存储计算分 ...
- QTreeView使用总结11,数据过滤,使用代理model,简单过滤
1,简介 有时候需要对tree内的数据按一些条件进行过滤显示,比如按搜索条件过滤,这时候就用到了代理model. 通常使用Qt提供的 QSortFilterProxyModel 类,该类实现了常见的按 ...
- Qt学习之路_12(简易数据管理系统)
原文地址为: Qt学习之路_12(简易数据管理系统) 前言 最近从大陆来到台湾,之间杂事很多,挤不出时间来更新博客- 这次主要是通过做一个简易的数据库管理系统,来学习在Qt中对数据库,xml,界面的各 ...
- 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 很多工程师可能刚开始的 ...
- 【Android 内存优化】Android 工程中使用 libjpeg-turbo 压缩图片 ( JNI 传递 Bitmap | 获取位图信息 | 获取图像数据 | 图像数据过滤 | 释放资源 )
文章目录 一.Bitmap 图像数据处理 二.Java 层 Bitmap 对象转为 JNI 层 bitmap 对象 三.获取 bitmap 中的图像数据 四.过滤 bitmap 中的图像数据 ( 获取 ...
- python分组求和_Python学习笔记之pandas索引列、过滤、分组、求和功能示例
本文实例讲述了Python学习笔记之pandas索引列.过滤.分组.求和功能.分享给大家供大家参考,具体如下: 前面我们已经把519961(基金编码)这种基金的历史净值明细表html内容抓取到了本地, ...
- Aspose Cells 控件如何实现数据过滤(附代码和下载地址)
Aspose Cells 是一款操作和处理以及转换Excel文件的类库,支持.NET和JAVA版,几乎所有Excel能实现的功能,Aspose Cells都可以实现,在Excel中经常会用到数据过滤, ...
最新文章
- 12.MySql关于获取当前时间的三个函数
- Nature子刊:整合宏基因组、代谢组和表型分析的的计算框架
- halcon/c++接口基础 之异常处理
- php_os用法,golang中os包用法
- r语言代码html,R语言学习笔记-内附实例及代码
- 画面每秒传输帧数是什么意思
- 浅谈面试中常考的两种经典布局——圣杯与双飞翼 1
- 50、多线程创建的三种方式之实现Runnable接口
- CSS的三种引入方式(行内样式、内部样式、外部样式)
- 用计算机术语写诗,网上盛行写诗软件 电脑作诗毫无逻辑令人喷饭
- SPLUS软件授权管理必知
- excel表格如何画斜线并写字
- 如何查看当前位置显存使用情况
- java毕业生设计原创网络文学管理系统计算机源码+系统+mysql+调试部署+lw
- 向量相似度度量(二):EMD (Earth Mover's Distance)的MATLAB对照实现
- 激励帖 冲呀 dreamer
- MySQL学习笔记04-DDL语句学习
- 多态性(一)——静态多态性
- 蒂特ft232_芯片资料-FT232.pdf
- HAC集群添加新节点
热门文章
- module.exports 和 exports 、export default 、export、require 、 inport 的区别
- 正整数前n项平方和与立方和的推导
- 解决OPPO手机adb调试找不到设备
- [元带你学NVMe协议] NVMe协议的命令
- 听云重磅发布 [2014中国移动应用性能管理白皮书]
- Centos7下Nginx代理和二级域名配置
- 抢占Z世代心智 汽车行业不可错过的B站
- 怎么使用计算机操作鼠标,用鼠标按回车 - 电脑操作 - 其它经验分享 - KK的小故事...
- 【产品经理】常用需求优先级评估模型
- 物联网-计算机网络与互联网技术的发展