# -*- 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的更多相关文章

  1. Qt QSortFilterProxyModel示例代码, 使用方法

    1. QSortFilterProxyModel不能单独使用,它只是一个"代理",真正的数据需要另外的一个model提供,而且它是用来排序和过滤的. 2. 实现代码 #ifndef ...

  2. Qt之QHeaderView自定义排序(QSortFilterProxyModel)

    简述 对以上节的排序,我们衍伸了两点: 把一个字符串前面的数据按照字符串比较,而后面的数据按照整形比较. 将整形显示为字符串,而排序依然正常呢. 为了分别描述,这里我们先解决问题1. 简述 效果 处理 ...

  3. Qt 学习之路:QSortFilterProxyModel

    从本章开始,我们将逐步了解有关自定义模型的相关内容.尽管前面我们曾经介绍过 Qt 提供的几个内置模型:QStringListModel和QFileSystemModel,但对于千变万化的需求而言,这些 ...

  4. Qt 学习之路 2(48):QSortFilterProxyModel

    Qt 学习之路 2(48):QSortFilterProxyModel 豆子 2013年4月11日 Qt 学习之路 2 6条评论 从本章开始,我们将逐步了解有关自定义模型的相关内容.尽管前面我们曾经介 ...

  5. PyQt(Python+Qt)学习随笔:model/view架构中的排序和代理模型QSortFilterProxyModel

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 在Model/View体系架构中,有两种方法可以进行排序:选择哪种方法取决于底层模型. 如 ...

  6. 用Qt写软件系列五:一个安全防护软件的制作(3)

    引言 上一篇中讲述了工具箱的添加.通过一个水平布局管理器,我们将一系列的工具按钮组合到了一起,完成了工具箱的编写.本文在前面的基础上实现窗体分割效果.堆栈式窗口以及Tab选项卡. 窗体分割 窗体分割是 ...

  7. Qt之QHeaderView自定义排序(终极版)

    简述 本节主要解决自定义排序衍生的第二个问题-将整形显示为字符串,而排序依然正常. 下面我们介绍三种方案: 委托绘制 用户数据 辅助列 很多人也许会有疑虑,平时都用delegate来绘制各种按钮.图标 ...

  8. Qt之QHeaderView排序

    简述 在Windows中我们经常会遇到表头排序,比如可以对文件按照名称.修改日期.类型.大小进行排序,方便我们统一的归类查找. Qt中,我们可以通过点击表头来对QTableView或QTreeView ...

  9. 《Qt 实战一二三》

    简介 "我们来自Qt分享&&交流,我们来自Qt Quick分享&&交流",不管你是笑了,还是笑了,反正我们是认真的.我们就是要找寻一种Hold不住的 ...

随机推荐

  1. MyBatis配置解析

    MyBatis配置文件解析(概要) 1.configuration:根元素 1.1 properties:定义配置外在化 1.2 settings:一些全局性的配置 1.3 typeAliases:为 ...

  2. (转)iOS7界面设计规范(6) - UI基础 - 模态情境

    继续规范.现在听着Clapton的Wonderful Tonight,想想看,整个高二暑假都在为这首歌着迷,经常夜里一边做英语暑期作业一边循环这首歌,心里特别静的赶脚.13年过去了,再听起来,就像隔着 ...

  3. [RxJS] Sharing Streams with Share

    A stream will run with each new subscription added to it. This lesson shows the benefits of using sh ...

  4. 正确的安装qwtplot3D开发库

    1.从网上下载qwtplot3D的最新版本:http://qwtplot3d.sourceforge.net/ 2.解压qwtplot3d-0.2.7.zip到C盘根目录下(注意:路径中不能带有中文汉 ...

  5. 支持多QQ登录的软件

    支持多QQ登录,批量加好友,批量回复QQ消息,当然也能接收 下载链接:多QQ登录软件

  6. 原生js获取body

    1. doucumnet.body 2. document.getElementsByTagName("body")[0]

  7. Oracle游标cursor2显示的游标等

    --在一中我们介绍了实现过程 select *from stud; declare cursor mycur is select id,name from stud;--1声明 v_id intege ...

  8. ORA-00845: MEMORY_TARGET not supported

    Enabling Automatic Memory Management alter system set memory_max_target=50G scope=spfile; alter syst ...

  9. 修补--Redis未授权访问漏洞

    --------------------------------阿里云解决方案----------------------------------- 一.漏洞描述 Redis因配置不当可以导致未授权访 ...

  10. Python中range的用法

    函数原型:range(start, end, scan): 参数含义:start:计数从start开始.默认是从0开始.例如range(5)等价于range(0, 5); end:技术到end结束,但 ...