PyQt学习随笔:Qt中Model/View中的怎么构造View匹配的Model

Qt5数据库读写、Xml文档读写、model\View模型视图示例 本示例来自qt网站(https://doc.qt.io/qt-5.15/qtsql-masterdetail-example.html),但对原示例做部份修改,因为原示例存在很多bug,只能说能正常编译通过,但没有按预期的设计要求运行,有些功能不正常,比如:新艺术家插入专辑时不正常,可能插入空行;删除专辑时,没有刷新右边艺术家及专辑信息 示例运行界面: 示例功能: 可以通过File菜单,新增、删除艺术家及专辑 当选择Artist时,Details会显示这个艺术家的名字、专辑数量 当点击专辑时,Deta. 阅读详情

在《PyQt学习随笔:Qt中Model/View相关的主要类及继承关系》介绍了Model/View架构的主要类,在实际使用时,view相关类的对象在Qt Designer中可以直接构建,但Model相关类的对象必须代码实现,那么怎么去构造Model相关的对象与View匹配呢?

其实Model构建的方法与View类别相关,但View类别并不是唯一确认Model构建方法的要素,还要看View中数据的内容。一般来说:

  • 如果是多行单列的字符数据,可以使用QStringListModel来构造Model存储;
  • 如果是多行多列多类型的统一格式的数据,可以使用QStandardItemModel来构建Model存储;
  • 如果是本地文件路径类型的数据,可以使用QDirModel来构建Model存储,也可以使用QFileSystemModel,不过现在Qt也不推荐使用QDirModel,而是建议使用 QFileSystemModel, QFileSystemModel性能比QDirModel高;
  • 如果以上Qt已经实现了的Model’类还不能满足要求,则可以通过QAbstractItemModel或其子类来派生自定义类来创建Model存储。

以上方法中,对于从QAbstractItemModel派生类这种方式对于一般开发来说没有必要,老猿暂时也没有深入研究怎么,但如果对要处理大批量数据且需要展现的则可能要考虑使用这种方式。

老猿Python,跟老猿学Python!
PyQt Model/View编程:通过实例代码来认识 Delegate 组件的强大功能 Delegate是PyQt Model/View 模型-视图框架的3个组件之一,也称为委托,或代理, Delegate主要用于渲染单元格外观; 为修改时提供编辑控件功能。QAbstractItemDelegate是基类, 子类有ItemDelegate, QStyledItemDelegate, QSqlRelationalDelegate类,本文给出了自定义下拉列表Combo Delegate、进度条 progressBar Delegate, 星号图形 Delegate类的实例代码 阅读详情

相关推荐

PyQt(Python+Qt)学习随笔

PyQt学习随笔:QtDesigner ListView控件列表项的初始化

老猿Python 5806

PyQt(Python+Qt)学习随笔:Model/View架构中的Model模型概念

老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 Model/View架构中的Model模型Model与数据源通信,为体系结构中的其他组件提供数据接口。与数据源通信的方式取决于数据源的类型(如文件、数据库、消息等)以及模型的实现方式。由于模型中的数据都是以项(item)为单位进行管理,所以Model模型又称为项模型(item models )。...

老猿Python 2333

pyqt-model-view-framework-overview.pdf

pyqt-model-view-framework-overview 作者:陳俊嘉 a.k.a CCC

第15.23节 PyQt(Python+Qt)入门学习:Model/View架构中QListView视图配套Model的开发使用

老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一、概述 QListView理论上可以和所有QAbstractItemModel派生的类如QStringListModel、QDirModel、QFileSystemModel、QStandardItemModel等对接,但QListView实际上能展示的数据仅一列,对于复杂的树形层次使用Mod...

老猿Python 2403

QT在QTableView的一列里添加两个按钮

http://www.cnblogs.com/li-peng/p/4029885.html的源码,QT在QTableView的一列里添加两个按钮

冒险岛脚本函数大全:cm.sendYesNo和cm.warp的20个实战用法

本文深入解析了冒险岛脚本中cm.sendYesNo和cm.warp两个核心函数的20个实战应用场景。从基础的确认对话框交互、条件判断,到复杂的装备强化系统、动态传送与副本入口逻辑,文章通过大量代码示例展示了如何组合运用这两个函数,实现从简单NPC到复杂任务系统的进阶脚本开发,并分享了状态管理、错误处理与性能优化等最佳实践。

t4y5u6i7o的博客 1060

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

QT开发(三十六)——Model/View框架一、Model/View框架简介1、Model/View框架核心思想Model/View框架的核心思想是模型(数据)与视图(显示)相分离,模型对外提供标准接口存取数据,不关心数据如何显示,视图自定义数据的显示方式,不关心数据如何组织存储。Model/View框架中数据与显示的分离,可以允许使用不同界面显示同一数据,...

weixin_34348174的博客 667

WPS Office 2026免费安装指南:AI办公与安全使用全解析

办公软件作为数字化办公的核心工具,其基本原理是通过文档处理、数据计算和演示展示等功能模块满足用户日常办公需求。随着人工智能技术的发展,现代办公软件逐步集成AI能力,通过自然语言处理和数据分析算法提升工作效率。在技术价值层面,优秀的办公软件不仅需要保持格式兼容性和跨平台同步能力,更要注重用户数据安全防护。从应用场景来看,无论是个人文档编辑、企业报表分析还是团队协作演示,办公软件都发挥着关键作用。WPS Office 2026作为国产办公软件代表,深度融合AI助手功能,支持智能写作和数据分析,同时通过官方免费策

weixin_30599769的博客 721

PyQT Model/View编程:数据库增删改查(CRUD)操作的可视化

PyQT 的模型/视图 (Model/View)编程模式,是MVC的一种简化实现。 本文通过两个实例讲解如何实现PyQT对数据库可视化操作。 1) 用 QSqlTableModel, QTableView 实现 contacts数据库的可视化操作,包括显示、添加、修改、删除、查询等功能,并提供了示例代码。 2) 通过QSqlRelationalTableModel实现外键表的关联操作

Python技术探索 6068

利用Openlayers4实现地图遮罩效果(二)

之前实现的遮罩效果,在深色背景的底图上,对要突出的区域采用半透明遮罩,以此来突出该区域。但是有时底图颜色偏白,这时候不再适合对要突出的区域采用遮罩,而是要对突出区域之外进行遮罩处理。两种效果的对比入下图: ...

此爱如少年 6398

Mplus实战:三变量随机截距交叉滞后模型(RI-CLPM)语法详解与扩展

本文详细解析了Mplus中三变量随机截距交叉滞后模型(RI-CLPM)的构建原理与语法实现。通过将变量分解为稳定的个体间差异与动态的个体内波动,模型能更纯净地揭示多变量间的纵向交互影响。文章以工作压力、睡眠质量与工作满意度为例,提供了完整的语法模板、关键参数设置(如NOCOV命令、残差相关)及结果解读指南,帮助研究者避开常见误区,稳健分析复杂动态关系。

wdx0123456的博客 926

PyQt4学习笔记2】Qt 的 Model/View 架构

文章详细介绍了Qt 的 Model/View 架构

look_outs的博客 1750

Abaqus梁模型仿真中的常见陷阱与优化策略

本文深入探讨了Abaqus梁模型仿真中的常见陷阱与优化策略,涵盖几何建模、材料属性设置、边界条件处理等关键环节。针对梁截面方向定义、网格划分、复合截面建模等典型问题,提供了实用的Python脚本示例和优化方案,帮助工程师避免计算错误并提升仿真精度。文章特别强调了动力分析中的网格密度要求和材料非线性考虑,为复杂工程应用提供专业指导。

weixin_29099217的博客 461

PyQt(Python+Qt)学习随笔:Model/View架构概述

老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一、引言 模型-视图-控制器(Model-View-Controller,简称MVC)是一种源于Smalltalk在构建用户界面时 广泛使用的设计模式。在《Design Patterns》一书中,Gamma等人这样描述到:“MVC由三种对象组成。模型Model是应用程序对象,视图View是其屏...

老猿Python 2027

长安车机破解后能干啥?分享我的UNI-K车机安装第三方应用与优化体验实录

本文详细记录了长安UNI-K车机破解后的实用玩法与深度优化指南,包括安装第三方应用、导航体验升级、影音系统改造及系统美化等。通过工具箱和升级技巧,车主可以大幅提升用车体验,解锁更多隐藏功能。

weixin_33217202的博客 405

云桌面如何部署?云桌面系统方案部署详细教程

云桌面作为一种比较新的技术工具,核心解决的场景是方便设计师的灵活办公,本身技术就是非常的灵活性,所以在安装部署方面青椒云也做到了十足的灵活。

2301_79113726的博客 1633

PyQt(Python+Qt)学习随笔:model/view架构中的QStringListModel

老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一、QStringListModel介绍 QStringListModel是Qt提供的一个已经实现QAbstractItemModel相关接口的Model,适合于展示一系列字符串的简单视图如QListView对象和QComboBox对象。 QStringListModel提供了所有可编辑模型的标...

老猿Python 2342

uniapp - 解决 uni.chooseImage 在苹果 IOS 真机上点击没反应的问题,苹果手机点击 uni.chooseImage方法不生效,也不报任何错误(解决苹果ios系统点击无效问题)

uniapp小程序h5网页苹果ios系统点击uni.chooseImage不执行点击无效,uniapp使用uni.chooseImage方法点击没反应怎么办,uniappuni.chooseImage在ios苹果手机运行点击不触发,uniappuni.chooseImage苹果ios系统点击无效,uniapp项目ios端云打包之后uni.chooseImage不生效了,uniapp打包之后uni.chooseImage()无法打开相机,uniapp苹果手机无法打开相机和相册,uniapp网页h5微信支

🏆 前端领域优质创作者 1万+

第15.27节 PyQt(Python+Qt)入门学习:Model/View架构中的便利类QTreeWidget详解

老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一、引言 树部件(Tree Widget)是Qt Designer中 Item Widgets(Item-Based)部件中提供的一个Model/View便利部件,对应类为QTreeWidget类。 QTreeWidget类从QTreeView派生(继承关系请参考《PyQt学习随笔:Qt中Mod...

老猿Python 4427

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

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

老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一、概述 在Model/View体系架构中,有两种方法可以进行排序;选择哪种方法取决于底层模型。 如果模型是可排序的,即模型类实现了QAbstractItemModel.sort()函数,如QTableView和QTreeView都提供一个API,允许以编程方式对模型数据进行排序。此外,还...

老猿Python 2407

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

第15.22节 PyQt(Python+Qt)入门学习:Model/View架构详解

老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一、简介 在PyQt和Qt中,Model/View架构是图形界面开发时用于管理数据和界面展现方式的关系。由该体系架构引入的功能分离使得开发人员能够更灵活地定制展现数据项的呈现方式,并提供标准模型接口支持广泛的数据源与预定义好的项视图(item views)一起使用。 二、Model/View架构...

老猿Python 3777

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Qt Model/View 编程深度解析报告

本文介绍了Qt框架中的Model/View架构,该架构通过分离数据与视图解决了传统GUI开发中的数据冗余和同步问题。文章首先分析了传统基于项控件的局限性,指出其数据耦合导致的维护成本上升。随后阐述了Model/View对MVC模式的改进,合并视图和控制器角色并引入委托机制,形成了Model/View/Delegate范式。 核心内容围绕三大组件展开: 模型作为数据抽象层,通过QAbstractItemModel标准接口统一访问各类数据源,提供QAbstractListModel和QAbstractTable

greenspan的专栏 2180

PyQt学习随笔:Qt中Model/View中的Model Index

Qt中Model/View中的Model Index是一个类,该类用于定位Model/View中数据模型中的数据。 Model Index是从QAbstractItemModel派生的子类,用于在项视图( item views)、委托(delegates)和选择模型( selection models)使用来定位Model中的数据项(delegates相当于MVC中的C,用于在视图中处理用户的输入...

老猿Python 3991

PyQt学习随笔:Model/View中诸如DisplayRole的数据角色及含义

在PyQt中,模型可以针对不同的组件(或者组件的不同部分,比如按钮的提示以及显示的文本等)提供不同的数据。例如,Qt.DisplayRole用于视图的文本显示。通常来说,模型中的数据项包含一系列不同的数据角色,数据角色定义在 Qt.ItemDataRole 枚举中,包括下列枚举值: Qt.DisplayRole:文本表格中要渲染的关键数据 Qt.EditRole:编辑器中正在编辑的数据 Qt.To...

老猿Python 7405

实战PyQt5: 064-Model-View框架中的Model类

模型(Model)简介 在Model-View框架中,模型(Model)为视图(View)和委托(Delegate)使用数据提供了标准接口。大多数情况下模型中并不真正存储数据(如果只有少量的数据,可以直接存在在模型里),它们只负责从诸如磁盘文件、数据库、网络通讯等获得源数据,并提供给视图,用户在视图中对数据进行修改,然后视图再通过模型更新源数据。在Qt中,模型类的标准接口通过QAbstractItemModel类来定义。在Qt中内置了多种标准模型。 不管数据在底层以何种数据结构存储,所有QAbstrac

seniorwizard的专栏 3287

PyQt(Python+Qt)学习随笔:model/view架构中类QStandardItemModel的使用方法

QStandardItemModel类用于在Model/View架构中存储自定义数据的通用模型。 QStandardItemModel可以用作标准Qt数据类型的数据存储Model。QStandardItemModel提供了一种经典的基于项的方法来处理模型中的数据。QStandardItem模型中的项对应类型必须为QStandardItem。 QStandardItemModel是QAbstract...

老猿Python 6673
上一篇: PyQt(Python+Qt)学习随笔:QAbstractItemView的tabKeyNavigation属性
下一篇: PyQt(Python+Qt)学习随笔:model/view架构中类QStandardItemModel的使用方法
LaoYuanPython
LaoYuanPython 2020年博客之星Top3 2020年博客之星Top3 领域专家: Python技术领域 领域专家: Python技术领域
博客等级 码龄8年 15万+粉丝 1324原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

LaoYuanPython

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

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

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

打赏作者

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

抵扣说明:

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

余额充值