t model/view 架构自定义模型之QFileSystemModel

# -*- coding: utf-8 -*-

# python:2.x

#QFileSystemModel

"""

Qt  内置了两种模型:QStandardItemModel 和

QFileSystemModel 。QStandardItemModel 是一种多用途的模型,能够让列表、表格、

树等视图显示不同的数据结构。这种模型会将数据保存起来。试想一下, 列表和表格所要求

的数据结构肯定是不一样的:前者是一维的,后者是二维的。因此,模型需要保存有实际数

据,当视图是列表时,以一维的形式提供数据;当视图是表格时,以二维的形式提供数据。

QFileSystemModel 则是另外一种方式。它的作用是维护一个目录的信息。因此,它不需

要保存数据本身,而是保存这些在本地文件系统中的实际数据的一个索引。我们可以利用

QFileSystemModel 显示文件系统的信息、甚至通过模型来修改文件系统

"""

#QFileSystemModel会把根目录路径设置为当前目录QFileSystemModel 完全将所能想到的东西——名称、大小、类型、修改时间等全部显示出来,可见其强大之处

__author__ = ‘Administrator‘

#如果你要立即刷新结果,需要通知QFileSystemWatcher 类。

from PyQt4.QtGui import  *

from PyQt4.Qt import *

from PyQt4 import QtGui, QtCore

from PyQt4.QtCore import *

import sys

class Painterd(QWidget):

def __init__(self):

super(Painterd,self).__init__()

self.setFixedSize(300,200)

self.vector()

def vector(self):

self.model=QFileSystemModel()

self.model.setRootPath(QDir.currentPath())

self.treeview=QTreeView(self)

self.treeview.setModel(self.model)

self.treeview.setRootIndex(self.model.index(QDir.currentPath()))

mkdirpubutton=QPushButton(‘mkdir‘,self)

self.rmbutton=QPushButton(‘rmbu‘,self)

self.buttonlayout=QVBoxLayout()

self.buttonlayout.addWidget(mkdirpubutton)

self.buttonlayout.addWidget(self.rmbutton)

layout=QVBoxLayout()

layout.addWidget(self.treeview)

layout.addLayout(self.buttonlayout)

self.setLayout(layout)

self.setWindowTitle("File System Model")

mkdirpubutton.clicked.connect(self.mkdir)

self.rmbutton.clicked.connect(self.rm)

def rm(self):

index=self.treeview.currentIndex()

if not index.isValid():#判断是没有目录被选择的

return

ok=False

if self.model.fileInfo(index).isDir():#目录和文件的删除不是一个函数,需要调用 isDir()函数检测

ok=self.model.rmdir(index)

else:

ok=self.model.remove(index)

if not ok:

QMessageBox.information(self,‘remove‘,self.tr(‘remove%1‘).arg(self.model.fileName(index)))

def mkdir(self):

index=self.treeview.currentIndex()

if not index.isValid():#判断是没有目录被选择的

return

ok,dirname=QInputDialog.getText(self,‘create dir‘,‘dir name‘)

print dir(ok)

if not ok.isEmpty():

if not self.model.mkdir(index,ok).isValid():

QMessageBox.information(self,‘create‘,‘the dir‘)

def main():

app = QtGui.QApplication(sys.argv)

ex =Painterd()

ex.show()

sys.exit(app.exec_())

if __name__ == ‘__main__‘:

main()

如图:

#更多请看:http://devbean.blog.51cto.com/448512/265658/

t model/view 架构自定义模型之QFileSystemModel

时间: 2024-10-12 22:32:06

t model/view 架构自定义模型之QFileSystemModel的相关文章

qt model/view 架构自定义模型之QStringListModel

# -*- coding: utf-8 -*- # python:2.x #QStringListModel #QStringListModel 是最简单的模型类,具备向视图提供字符串数据的能力. #QStringListModel 是一个可编辑的模型,可以为组件提供一系列字符串作为数据. #看作是封装了 QStringList 的模型.QStringList 是一种很常用的数据类型,实际上 #是一个字符串列表(也就是 QList<QString>).既然是列表,它也就是线性的数据结构, #因

qt model/view 架构基础介绍之QListWidget

# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' from PyQt4.QtGui import  * from PyQt4.Qt import * from PyQt4 import QtGui, QtCore from PyQt4.QtCore import * import sys # MVC是Model-View-Controller的简写,即模型-视图-控制器 #model/view框架将传统的mv模型分

qt model/view 架构基础介绍之QTreeWidget

# -*- coding: utf-8 -*- # python:2.x #说明:QTreeWidget用于展示树型结构,也就是层次结构同前面说的 QListWidget 类似,这个类需要同另外一个辅助类 # QTreeWidgetItem 一起使用.不过,既然是提供方面的封装类,即便是看上去很复杂的树, # 在使用这个类的时候也是显得比较简单的 __author__ = 'Administrator' from PyQt4.QtGui import  * from PyQt4.Qt impor

qt model/view 架构基础介绍之QTableWidget

# -*- coding: utf-8 -*- # python:2.x #说明:QTreeWidget用于展示树型结构,也就是层次结构同前面说的 QListWidget 类似,这个类需要同另外一个辅助类 # QTreeWidgetItem 一起使用.不过,既然是提供方面的封装类,即便是看上去很复杂的树, # 在使用这个类的时候也是显得比较简单的 __author__ = 'Administrator' from PyQt4.QtGui import  * from PyQt4.Qt impor

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

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

Qt Model/View(转)

介绍 Qt 4推出了一组新的item view类,它们使用model/view结构来管理数据与表示层的关系.这种结构带来的功能上的分离给了开发人员更大的弹性来定制数据项的表示,它也提 供一个标准的model接口,使得更多的数据源可以被这些item view使用.这里对model/view的结构进行了描述,结构中的每个组件都进行了解释,给出了一些例子说明了提供的这些类如何使用. Model/View 结构 Model-View-Controller(MVC), 是从Smalltalk发展而来的一种

Qt Model/View( 一)

http://doc.trolltech.com/main-snapshot/model-view-programming.html 介绍 Qt 4推出了一组新的item view类,它们使用model/view结构来管理数据与表示层的关系.这种结构带来的功能上的分离给了开发人员更大的弹性来定制数据项的表示,它也提供一个标准的model接口,使得更多的数据源可以被这些item view使用.这里对model/view的结构进行了描述,结构中的每个组件都进行了解释,给出了一些例子说明了提供的这些类

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

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

5.Qt model view设计模式

Introduction to Model/View Programming QT4 介绍了一系列新的 Item View 类,这些类使用Model/View结构来管理数据和数据如何呈现给用户.这种结构使程序员更加灵活的开发和定制呈现数据界面,Model/View结构提供标准的Model接口让各种数据资源都能够被存在的Item View使用. The model/view architecture MVC是一种源于 smalltalk的设计模式,经常用来构建应用程序界面. MVC有3个对象构成.