PyQt(Python+Qt)学习随笔:model/view架构中的两个标准模型QStandardItemModel和QFileSystemModel

一、PyQt中的标准模型

PyQt和Qt提供了两个标准模型QStandardItemModel和QFileSystemModel。QStandardItemModel是一个多用途模型,可用于表示列表list、表table和树tree类型视图所需的各种不同数据结构,模型可以保存数据项。QFileSystemModel是一个维护文件目录内容信息的模型,它本身不包含任何数据项,而只是表示本地文件系统上的文件和目录。

QFileSystemModel 提供了一个随时可用的模型来进行实验,并且可以很容易地配置为使用现有的数据。使用此模型,我们可以演示如何设置用于现成视图的模型,并探索如何使用模型索引(model indexes)操作数据。 QListView 和 QTreeView这两个视图是最适合使用QFileSystemModel的视图。

二、QFileSystemModel使用案例

在应用中创建了一个QFileSystemModel实例,并在图形界面中设计创建了 QListView 和 QTreeView两个视图(视图名分别为listView和treeView),然后将视图对应的模型设置为QFileSystemModel实例用于来显示目录的内容。

1. 图形界面设计

在这里插入图片描述

2.在界面派生类中定义模型并将模型和视图关联
class w_mainWin(ui_fileView.Ui_fileViewMainWin,QtWidgets.QWidget):
    def __init__(self):
        super(w_mainWin, self).__init__()
        self.setupUi(self)
        self.model = QtWidgets.QFileSystemModel(self)
        self.model.setRootPath('c:\\') #QtCore.QDir.currentPath())
        self.listView.setModel(self.model)
        self.listView.setRootIndex(self.model.index('c:\\')) #QtCore.QDir.currentPath()))
        self.treeView.setModel(self.model)
        self.treeView.setRootIndex(self.model.index('c:\\')) #(QtCore.QDir.currentPath()))

代码中先完成界面类初始化工作,然后定义模型,并将模型指向对应目录,并将视图和模型绑定,并设置当前显示目录与模型监控目录一致。

3. 应用主程序代码
if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    W = w_mainWin()
    W.show()
    sys.exit(app.exec_())
4. 界面运行截图

在这里插入图片描述

三、QStandardItemModel使用案例

1、案例说明

在应用中展示指定目录的图标文件的文件名和图标,界面就是一个简单的窗口上面放置一名为listView的列表视图,在视图中展示这些文件名和图标。

2、在界面派生类中定义模型并将模型和视图关联
class mainWindow( QtWidgets.QWidget,ui_listView.Ui_mainWin):
    def  __init__(self):
        super(mainWindow, self).__init__()
        self.setupUi(self)
       
        self.model = QStandardItemModel()

        ICon1 = QStandardItem(QIcon(r"F:\学习\python\资源\图像文件\add.png"),'add.png')
        ICon2 = QStandardItem(QIcon(r"F:\学习\python\资源\图像文件\application_windows_add.png"), 'application_windows_add.png')
        ICon3 = QStandardItem(QIcon(r"F:\学习\python\资源\图像文件\save.png"), 'save.png')
        ICon4 = QStandardItem(QIcon(r"F:\学习\python\资源\图像文件\search.png"), 'search.png')
        ICon5 = QStandardItem(QIcon(r"F:\学习\python\资源\图像文件\stop.gif"), 'stop.gif')

        self.model.appendRow(ICon1)
        self.model.appendRow(ICon2)
        self.model.appendRow(ICon3)
        self.model.appendRow(ICon4)
        self.model.appendRow(ICon5)
        self.listView.setModel(self.model)

3、运行界面截图

在这里插入图片描述

老猿Python,跟老猿学Python!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LaoYuanPython

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值