qt QSortFilterProxyModel
# -*- coding: utf-8 -*-
# python:2.x
__author__ = 'Administrator'
from PyQt4.Qt import *
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys,os
"""
模型进行自定义:
QSortFilterProxyModel 获
得一些可能必须自定义才能达到的效果。QSortFilterProxyModel 并不能单独使用。顾名
思义,它是一个“代理”,其真正的数据需要另外的一个模型提供。它的作用是对数据进行排
序和过滤。排序很好理解,而过滤,则是按照输入的内容对数据及进行筛选,很像 Excel 里
面的过滤器。不过 Qt 提供的过滤功能是基于正则表达式的,功能很强大。
"""
class SysTem(QWidget):# Qt 预定义的所有颜色的名字(利用 QColor::colorNames()获取)。然后是 QSortFilterProxyModel 对象
def __init__(self,parent=None):#初始化
super(SysTem,self).__init__(parent)
model=QStringListModel(QColor.colorNames(),self)
self.modelProxy=QSortFilterProxyModel(self)
self.modelProxy.setSourceModel(model)
self.modelProxy.setFilterKeyColumn(0)#然后将FilterKeyColumn 设置为 0,也就是仅仅对第一列进行过滤。
view=QListView(self)
view.setModel(self.modelProxy)
fileterInput=QLineEdit()
filterLayout=QLabel('filter')
filta=QHBoxLayout()
filta.addWidget(filterLayout)
filta.addWidget(fileterInput)
self.syntaxBox=QComboBox()
self.syntaxBox.setSizePolicy(QSizePolicy.Expanding,QSizePolicy.Preferred)
self.syntaxBox.addItem('Regular expression',QRegExp.RegExp)
self.syntaxBox.addItem('Wildcard',QRegExp.Wildcard)
self.syntaxBox.addItem('Fixed string',QRegExp.FixedString)
syntaxLabel=QLabel('syntaxLabel')
sysaxLayout=QHBoxLayout()
sysaxLayout.addWidget(syntaxLabel)
sysaxLayout.addWidget(self.syntaxBox)
layout=QVBoxLayout(self)
layout.addWidget(view)
layout.addLayout(filta)
layout.addLayout(sysaxLayout)
fileterInput.textChanged.connect(self.filterChanged)
def filterChanged(self,text):
syntax = QRegExp.PatternSyntax(self.syntaxBox.itemData(self.syntaxBox.currentIndex()).toString())
regex=QRegExp(text,Qt.CaseInsensitive,syntax)
self.modelProxy.setFilterRegExp(regex)
app=QApplication(sys.argv)
system=SysTem()
system.show()
sys.exit(app.exec_())
如图:
qt QSortFilterProxyModel的更多相关文章
- Qt QSortFilterProxyModel示例代码, 使用方法
1. QSortFilterProxyModel不能单独使用,它只是一个"代理",真正的数据需要另外的一个model提供,而且它是用来排序和过滤的. 2. 实现代码 #ifndef ...
- Qt之QHeaderView自定义排序(QSortFilterProxyModel)
简述 对以上节的排序,我们衍伸了两点: 把一个字符串前面的数据按照字符串比较,而后面的数据按照整形比较. 将整形显示为字符串,而排序依然正常呢. 为了分别描述,这里我们先解决问题1. 简述 效果 处理 ...
- Qt 学习之路:QSortFilterProxyModel
从本章开始,我们将逐步了解有关自定义模型的相关内容.尽管前面我们曾经介绍过 Qt 提供的几个内置模型:QStringListModel和QFileSystemModel,但对于千变万化的需求而言,这些 ...
- Qt 学习之路 2(48):QSortFilterProxyModel
Qt 学习之路 2(48):QSortFilterProxyModel 豆子 2013年4月11日 Qt 学习之路 2 6条评论 从本章开始,我们将逐步了解有关自定义模型的相关内容.尽管前面我们曾经介 ...
- PyQt(Python+Qt)学习随笔:model/view架构中的排序和代理模型QSortFilterProxyModel
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 在Model/View体系架构中,有两种方法可以进行排序:选择哪种方法取决于底层模型. 如 ...
- 用Qt写软件系列五:一个安全防护软件的制作(3)
引言 上一篇中讲述了工具箱的添加.通过一个水平布局管理器,我们将一系列的工具按钮组合到了一起,完成了工具箱的编写.本文在前面的基础上实现窗体分割效果.堆栈式窗口以及Tab选项卡. 窗体分割 窗体分割是 ...
- Qt之QHeaderView自定义排序(终极版)
简述 本节主要解决自定义排序衍生的第二个问题-将整形显示为字符串,而排序依然正常. 下面我们介绍三种方案: 委托绘制 用户数据 辅助列 很多人也许会有疑虑,平时都用delegate来绘制各种按钮.图标 ...
- Qt之QHeaderView排序
简述 在Windows中我们经常会遇到表头排序,比如可以对文件按照名称.修改日期.类型.大小进行排序,方便我们统一的归类查找. Qt中,我们可以通过点击表头来对QTableView或QTreeView ...
- 《Qt 实战一二三》
简介 "我们来自Qt分享&&交流,我们来自Qt Quick分享&&交流",不管你是笑了,还是笑了,反正我们是认真的.我们就是要找寻一种Hold不住的 ...
随机推荐
- MyBatis配置解析
MyBatis配置文件解析(概要) 1.configuration:根元素 1.1 properties:定义配置外在化 1.2 settings:一些全局性的配置 1.3 typeAliases:为 ...
- (转)iOS7界面设计规范(6) - UI基础 - 模态情境
继续规范.现在听着Clapton的Wonderful Tonight,想想看,整个高二暑假都在为这首歌着迷,经常夜里一边做英语暑期作业一边循环这首歌,心里特别静的赶脚.13年过去了,再听起来,就像隔着 ...
- [RxJS] Sharing Streams with Share
A stream will run with each new subscription added to it. This lesson shows the benefits of using sh ...
- 正确的安装qwtplot3D开发库
1.从网上下载qwtplot3D的最新版本:http://qwtplot3d.sourceforge.net/ 2.解压qwtplot3d-0.2.7.zip到C盘根目录下(注意:路径中不能带有中文汉 ...
- 支持多QQ登录的软件
支持多QQ登录,批量加好友,批量回复QQ消息,当然也能接收 下载链接:多QQ登录软件
- 原生js获取body
1. doucumnet.body 2. document.getElementsByTagName("body")[0]
- Oracle游标cursor2显示的游标等
--在一中我们介绍了实现过程 select *from stud; declare cursor mycur is select id,name from stud;--1声明 v_id intege ...
- ORA-00845: MEMORY_TARGET not supported
Enabling Automatic Memory Management alter system set memory_max_target=50G scope=spfile; alter syst ...
- 修补--Redis未授权访问漏洞
--------------------------------阿里云解决方案----------------------------------- 一.漏洞描述 Redis因配置不当可以导致未授权访 ...
- Python中range的用法
函数原型:range(start, end, scan): 参数含义:start:计数从start开始.默认是从0开始.例如range(5)等价于range(0, 5); end:技术到end结束,但 ...