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

时间: 2024-10-13 02:43:29

qt QSortFilterProxyModel的相关文章

Qt学习记录,QSortFilterProxyModel

QSortFilterProxyModel主要可实现按表的标头实现自动排序,及根据过滤条件过滤,具体的demo可以查看QT自带的Item views系列. 我的例子还没加上过滤. add_da(QAbstractItemModel* model,int &ID,const QString& Description,const QString& Type){ model->insertRow(0); model->setData(model->index(0,0),

Qt 学习之路:QSortFilterProxyModel

从本章开始,我们将逐步了解有关自定义模型的相关内容.尽管前面我们曾经介绍过 Qt 提供的几个内置模型:QStringListModel和QFileSystemModel,但对于千变万化的需求而言,这些显然是远远不够的.于是,Qt 也允许我们对模型进行自定义. 在正式开始介绍自定义模形之前,我们先来了解一个新的类:QSortFilterProxyModel.之所以将这个类放在这里,是因为在一定程序上,我们可以使用QSortFilterProxyModel获得一些可能必须自定义才能达到的效果.QSo

将vim作为QT开发的IDE

转载请注明链接与作者huihui1988 用了一段时间的vim,喜欢上了这种简洁高效的编辑器.恰逢正在学习QT中,于是将vim变成了开发QT的工具.以下是具体配置. 一.语法高亮支持: 1.打开VIMDIR/vim72/syntax/cpp.vim,加入 syn keyword cppStatement SLOT,SIGNAL syn keyword cppAccess slots,signals 2.增加QT的类型名: syn keyword cType ActiveQt Q3Accel Q3

QT项目升级(QT4.6.3到QT5.2)时,遇到的问题和解决方法

QT4升级到QT5修改: PC部分: [改QTDIR变量] 在project根文件夹下找到.user文件, 如InnoTabPlugin.vcxproj.user 改动指向你的QT5根文件夹: <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Template|Win32'"> <QTDIR>C:\qt\Qt5.2.1\5.2.1\msvc2010</QTDIR> </Prop

Qt表格之Model/View实现

很多开发中都用到了表格,如何使用Qt做表格?比较简单的,我们可以使用QTableWidget,但是它有个问题,就是数据量不能太大,一旦数据量比较大的话就会带来内存问题.Qt还给我们提供了一样利器--Model/View.模型视图,接触Qt的都不会陌生,对新手来说可能不太好理解,没关系,Qt提供了强大的Assist文档和更加直观的Demo,相信看过之后使用来说就没有问题了.本篇文章来列出一个简单的例子,使用的就是表格的模型视图,在代码中给出了简单的注释说明.为什么要采用这种方式?试过的人都可以看到

Qt中派生QAbatractProxyModel

Qt是非常强大的,功能很全,它有个特点:如果你顺着它的特性做需求,那就会非常舒服顺畅.如果你要越过它的特性做一些特别的事: VERY PAINFULL 以下记录本人的一个非常痛苦的经历,希望可以让后来人少走弯路. 首先遇到的需求是,做一个可以根据外部筛选规则来自定义显示的tableview,外界可以选择显示数据集合中的某一段,此时tableview表现就好像整个数据集合只有这些数据一样.另外,原数据是一维数据,显示出来将是一个有行列的二维数据.这个规则不能用Qt的QSortFilterProxy

QT——模型/视图(model/view)

数据项中引入模型/视图架构,可以方便的将数据与表现层分开. ------------------------------------- 模型Model:一般来说,Model里面并不真正存储数据(数据少的话也可以直接存储在Model里),只是负责从诸如磁盘文件,数据库,网络通讯等获得源数据,并提供给View,View对数据进行修改,然后再通过Model更新源数据. Model 另一个重要工作时为源数据添加索引(ModelIndex).列表形式采用row/colum编号,树形式为建立父子间的层次关系

qt Qt5开发

本章将介绍使用Qt5开发.我们将告诉你如何安装Qt SDK,如何使用Qt Creator IDE创建以及运行一个简单的Hello World应用程序. 一.安装Qt5 SDK Qt SDK包括构建桌面或嵌入式应用所需的工具,最新版本可以从Qt-Project homepage上获取(推荐方式).该SDK本身具有维护工具,可以让你更新SDK到最新版本.Qt SDK易于安装并配有自己的IDE,促使Qt Creator快速发展.该IDE是一个高效Qt编程环境,推荐给所有的读者.在任何情况下,Qt可以在

QT开发(三十六)——Model/View框架

QT开发(三十六)--Model/View框架 一.Model/View框架简介 1.Model/View框架核心思想 Model/View框架的核心思想是模型(数据)与视图(显示)相分离,模型对外提供标准接口存取数据,不关心数据如何显示,视图自定义数据的显示方式,不关心数据如何组织存储. Model/View框架中数据与显示的分离,可以允许使用不同界面显示同一数据,也能够在不改变数据的情况下添加新的显示界面.为了处理用户输入,引入了委托(delegate).引入委托的好处是可以自定义数据项的渲