qt 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/
qt model/view 架构自定义模型之QFileSystemModel的更多相关文章
- qt model/view 架构自定义模型之QStringListModel
# -*- coding: utf-8 -*- # python:2.x #QStringListModel #QStringListModel 是最简单的模型类,具备向视图提供字符串数据的能力. # ...
- qt model/view 架构基础介绍之QListWidget
# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' from PyQt4.QtGui import * from Py ...
- qt model/view 架构基础介绍之QTableWidget
# -*- coding: utf-8 -*- # python:2.x #说明:QTreeWidget用于展示树型结构,也就是层次结构同前面说的 QListWidget 类似,这个类需要同另外一个辅 ...
- qt model/view 架构基础介绍之QTreeWidget
# -*- coding: utf-8 -*- # python:2.x #说明:QTreeWidget用于展示树型结构,也就是层次结构同前面说的 QListWidget 类似,这个类需要同另外一个辅 ...
- 第15.22节 PyQt(Python+Qt)入门学习:Model/View架构详解
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.简介 在PyQt和Qt中,Model/View架构是图形界面开发时用于管理数据和界面展现方式的关 ...
- PyQt(Python+Qt)学习随笔:Model/View架构中的Model模型概念
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 Model/View架构中的Model模型Model与数据源通信,为体系结构中的其他组件提供数据接口 ...
- Qt 学习之路 2(41):model/view 架构
Qt 学习之路 2(41):model/view 架构 豆子 2013年1月23日 Qt 学习之路 2 50条评论 有时,我们的系统需要显示大量数据,比如从数据库中读取数据,以自己的方式显示在自己的应 ...
- 第15.23节 PyQt(Python+Qt)入门学习:Model/View架构中QListView视图配套Model的开发使用
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 QListView理论上可以和所有QAbstractItemModel派生的类如QStri ...
- PyQt(Python+Qt)学习随笔:Model/View架构概述
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.引言 模型-视图-控制器(Model-View-Controller,简称MVC)是一种源于Sm ...
随机推荐
- c++ 之 字符和字符串
字符 1.字符的分类 字符主要包括字母.数字.标点符号.控制字符等 在ASCII编码表中,每一个字符都用一个十进制数来表示 注:ASCII的全称是American Standard Code for ...
- jps命令使用
jps工具 jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一个显示当前全部java进程pid的命令,简单有用,很适合在linux/un ...
- correlated subquery and non-correlated subquery
子查询:嵌套在其他查询中的查询称之. 子查询又称内部,而包含子查询的语句称之外部查询(又称主查询). 所有的子查询可以分为两类,即相关子查询和非相关子查询 1>非相关子查询是独立于外部查询的子查 ...
- 获取sqlserver数据库中所有库、表、字段名的方法
获取sqlserver数据库中所有库.表.字段名的方法 2009年03月12日 星期四 下午 12:51 1.获取所有数据库名: SELECT Name FROM Master..SysDatabas ...
- SSH公钥私钥安全通讯原理
客户端在访问服务器的时候,防止通讯信息被截取,进行加密处理通讯. 在服务器上会有两把钥匙,公钥和私钥.公钥可以对所有公开,私钥只有服务器自己知道, 并且公钥产生的密文只能通过私钥才能解开 1:客户端发 ...
- Js 时间间隔计算(间隔天数)
function GetDateDiff(startDate,endDate) { var startTime = new Date(Date.parse(startDate.replac ...
- C#限制转换后的double小数点留1位
glb_timer1WaitSeconds += 0.1; string s = string.Format("{0:f1}", glb_timer1WaitSeconds);
- Mysql学习(慕课学习笔记5)约束
约束类型: 1.NOT NULL (非空约束) 2.PRIMARY KEY(主键约束) 每张数据表只能存在一个主键 主键保证记录的唯一性 主键自动为NOT NULL (Auto_increment ...
- 慕课linux学习笔记(二)Xshell与虚拟机的连接
选择使用的是Xshell5 新建连接 连接成功 修改编码方式,字号,颜色 PS: 连接过程中遇到了很多问题,虚拟机的网络连接我最初选择的是桥连,虚拟机和主机相互之间都能ping通但Xshell就是连接 ...
- CentoS7装机
按delete进入BIOS 选择UEFI 网上关于CentOS 7 的安装教程挺多的,但在前期的引导配置上很多都没有写清楚,让人很郁闷,以致于昨天安装的时候总是到不了安装界面.经过一番胡乱倒腾,终于找 ...