PyQt学习随笔:Model/View架构中多个视图之间选择数据项同步

Qt编程之一个数据模型model对应多个视图VIEW的实例 实例界面 主程序main.cpp #include "connection.h" #include <QApplication> #include <QSqlTableModel> #include <QTableView> #include <stdlib.h> void initializeModel(QSqlTableModel *model) { model->setTable("person"); model->s 阅读详情

我们知道多个视图之间通过使用相同的model就可以实现数据的共享(具体请参考《
PyQt学习随笔:ListView控件的视图和数据模型分离案例》),除了数据的共享之外,多个视图之间还可以同步选择项,需要同步选择项的视图首先必须是数据共享的,然后再设置相互之间有相同的选择Model,即选择项的数据存储,则这些同步视图中的一个的数据项选择发生变化会同时引起选择项同步设置了的视图的选择项发生同样的变更。
如果要实现ViewA与ViewB的视图同步,只需要执行如下语句:
ViewA.setSelectionModel(ViewB.selectionModel())即可。

如要在《PyQt学习随笔:ListView控件的视图和数据模型分离案例》实现m_ListView和m_listViewCopy数据共享的基础上实现选择项同步,只需要在《PyQt学习随笔:ListView控件的视图和数据模型分离案例》的构造函数中增加最后一个语句即可。构造函数的完整代码如下:

 def __init__(self):
        super(appmain, self).__init__()
        self.setupUi(self)
        self.itemmodel=QStringListModel(self) #定义数据存储
        self.itemmodel.setStringList(["item1","item2"]) #数据存储初始化
        self.m_ListView.setModel(self.itemmodel) #第一个窗口绑定数据存储
        self.m_listViewCopy.setModel(self.itemmodel) #第二个窗口绑定同样的数据存储
        #下行代码实现两个视图同步选择项
        self.m_listViewCopy.setSelectionModel(self.m_ListView.selectionModel())
        
        

博客地址:https://blog.youkuaiyun.com/LaoYuanPython

老猿Python博客文章目录:https://blog.youkuaiyun.com/LaoYuanPython/article/details/98245036

204.PyQt5_Model-View_编程思维 首先,大家可能会有疑问,这个Model/View编程思维是个啥?和我们学习的PyQt5有什么关系其实,开始我也并不知道什么Model/View编程思维。从学完基础控件,然后学自定义信号、动画,然后就开始学习高级控件——QListView、QTableView,但是在课程中老师会一直讲到数据模型(Model),然而我并没有接触过Model,课程中也没有去介绍Model,所以我才回过头来学习一下Model。 阅读详情

相关推荐

使用Python学习PyQt中Model/View架构下多个视图之间选择数据项同步

在PyQt中,Model/View架构是一种常用的设计模式,用于将数据和其表示分离,从而实现数据的可视化展示和编辑。在Model/View架构中,数据由Model进行管理,而视图(View)用于展示数据,并与Model进行交互。在某些情况下,我们可能需要在多个视图之间实现数据项的同步,即当一个视图中选择了某个数据项时,其他视图也会相应地更新选中状态。接下来,我们需要创建多个视图来展示这个Model中的数据,并实现视图之间的数据同步。在本例中,我们假设我们的Model管理的是一个简单的字符串列表。

ByteBuster的博客 144

PyQt学习随笔:Model和View之间的数据互动过程

在《PyQt学习随笔:Qt中tem Views(Model-Based)和Item Widgets(Item-Based)控件的用途和关系》中介绍了,Model用于存储数据,View用于展现并接受用户操作。在实现时,Model和View的交互过程有如下几种: 1、初始化时,通过view类的setModel函数将View和Model进行关联; 2、在项目中,Model中的数据一般来源于数据源(如数据...

老猿Python 1711

PyQt学习随笔:使用Model/View实时获取视图数据项编辑变动数据的方法

其中,Model/View模式是PyQt中一个重要的概念,它允许我们根据数据模型展示数据,并支持数据的编辑操作。现在,当用户编辑单元格时,我们可以使用数据变动信号(dataChanged)和代理发送出来的commitData信号来获取编辑变动数据,进而进行相应的处理。现在,当用户编辑单元格时,我们可以使用数据变动信号(dataChanged)和代理发送出来的commitData信号来获取编辑变动数据,进而进行相应的处理。接下来,我们需要创建一个视图(QTableView),将数据模型和视图相互绑定。

code_welike的博客 430

Qt的Model/View结构

Model/View结构 将界面组件与所编辑的数据分离开来,又通过数据源的方式连接起来,是处理界面与数据的一种较好的方式。Qt使用Model/View结构来处理这种关系,Model/View的基本结构如图5-1所示。其中各部分的功能如下。 图1 Model/View基本结构(来自Qt帮助文件) 别人写的哪些都特别的麻烦,都不知道要讲什么意思,简单点讲。就是用了Model/View结构之后,我修改了界面上的数据就是同步修改了我Model中的数据,就是两者的数据是同步的。如果我们没有使用Model/View的

simple_core的博客 1808

PyQt(Python+Qt)学习随笔

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

老猿Python 5806

PyQt学习随笔:model/view架构中QTableView视图的数据无法正常显示问题解决

然后我们定义了一个data数据作为模型的初始化数据,最后将模型与QTableView视图连接起来并显示出来。在使用QTableView视图时,我们需要借助QAbstractTableModel或者QStandardItemModel来处理数据,然后将其与QTableView视图连接起来。如果模型中的数据存在,那么我们需要确认数据是否正确被传递给了QTableView视图。当发现问题时,我们需要先确认模型中的数据是否存在,然后再确认数据是否正确被传递给了QTableView视图。

. 1085

pyqt常见问题

1.listview显示右键获取行号与列号 def contextMenuEvent(self, pos): if self.selectionModel().selection().indexes(): for i in self.selectionModel().selection().indexes(): row, column = i.row(), i.column() menu = QtGui.QMenu() op

羞羞滴小朋友 370

SAP采购订单中项目类别B(限制)的控制逻辑

在笔者所在企业中,框架类采购订单中项目类别需要选择B(限制)。今天笔者从比较全面的角度分析了一下这个项目类别B到底可以决定些什么?控制到什么?先从后台SPRO中打开相应的配置菜单。 打开项目类别B之后,可以看到一些配置信息,这里有一点与其它配置不同的地方,即无法新增项目,也无法修改现有项目。这个疑惑今后再去解决吧。当前只研究项目类别B的控制逻辑。 下面就参考上图中的配置分段来分析和测试其控制逻辑, 1、如项目类别配置图,所需材料值为不允许;经测试,如下图在采购订单创建时,不能输入物料编号条目。

专注SAP应用技术文章写作,致力于拉近用户与系统间的距离; 6032

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

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

老猿Python 6673

DRM驱动架构浅析-上(DRM基础概要与U-Boot阶段驱动解析)

本文主要探讨了Rockchip平台的DRM显示驱动架构及其在U-Boot阶段的实现。

一路寒风身如絮,命海沉浮客独行 1765

PCB布线避坑指南:为什么你的差分线等长总调不好?AD19蛇形等长技巧详解

本文详细解析了AD19环境下PCB差分线等长调整的核心技巧与常见问题。从差分信号等长的底层逻辑到AD19规则配置,再到蛇形等长高级技巧和信号完整性验证,帮助工程师解决差分线等长调整中的难题,提升高速PCB设计的信号质量。

weixin_28738397的博客 383

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

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

look_outs的博客 1750

GitLab中国区注册终极解决方案:绕过+86手机验证的实战技巧(2023最新)

本文详细解析了GitLab中国区注册时绕过+86手机验证的三种实战技巧,包括开发者工具调试方案、使用国际号码的变通方案以及本地化部署替代方案。通过技术分析和实践验证,帮助开发者顺利注册GitLab账号,提升团队协作效率。

rl6adventurer的博客 1498

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

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

老猿Python 2027

告别Docker Desktop!Colima在Mac上的5分钟极速安装与配置指南(M1芯片实测)

本文详细介绍了如何在Mac(尤其是M1芯片)上快速安装和配置Colima,作为Docker Desktop的免费替代品。通过优化配置和实战指南,帮助开发者提升容器运行效率,减少资源占用,实现丝滑的开发体验。

weixin_28839601的博客 445

华为OD新系统机试真题 - API请求日志去重分析

华为OD新系统机试真题【API请求日志去重分析】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD4月15号机试真题【API请求日志去重分析】

qq_45776114的博客 916

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

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

老猿Python 3777

一步到位解决Docker拉取镜像失败的问题!超详细的Docker代理设置教程!(使用代理解决群晖Docker获取注册表失败的问题)

一步到位解决Docker拉取镜像失败的问题!超详细的Docker代理设置教程!(使用代理解决群晖Docker获取注册表失败的问题)

XiaoqiangClub的博客 1万+

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

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

老猿Python 2333

【nerfStudio】1-在windows上安装nerfStudio

安装Git。安装Visual Studio 2022。在安装CUDA之前必须完成此步骤。必须在“桌面开发与C++”工作流程(在BuildTools版本中称为“C++构建工具”)中包含所需的组件。Nerfstudio要求。我们建议使用conda来管理依赖关系。在继续之前,请确保安装了Conda。 依赖关系 PyTorch 请注意,如果安装了低于2.0.1的PyTorch版本,则应卸载先前版本的pytorch、functorch和tiny-cuda-nn。 基于CUDA 11.8的Torch 2.0.1 安装基

dlhlSC的博客 1692

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

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

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

老猿Python 2407

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

第15.18节 PyQt(Python+Qt)入门学习:Model/View架构中视图Item Views父类详解

一、概述 在PyQt图形界面中,支持采用Model/View架构实现数据和界面逻辑分离,其中Model用于处理数据存储,View用于界面数据展现,当Model中的数据变化后对应界面视图自动更新,反之当View中数据进行修改之后,也支持通知Model进行数据调整。 为了快速支持Model/View架构,PyQt提供了一系列类来支持,在Qt Designer中Item Views部件栏的视图部件都是用...

老猿Python 2204

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

PyQt学习随笔:重写setData方法截获Model/View中视图数据项编辑的注意事项

根据《PyQt学习随笔:Model/View中视图数据项编辑变动实时获取变动数据的方法》可以重写从PyQt的Model类继承的setData方法来实时截获View中对数据的更改,但需要注意,setData方法调用不光发生在View中实际存储的内部数据修改,也可能是其他与数据相关的属性或值调整,如数据项的checked变化,数据的对齐风格变化等。 因此如果应用需要响应数据的变化实时做出反应而重写se...

老猿Python 2649

PyQt学习随笔:Model/View中设置视图数据项可编辑的方法

在视图对象中调用setEditTriggers方法可以设置视图对象中的数据项是否可编辑以及编辑的触发方法。 setEditTriggers方法是QAbstractItemView的方法,语法如下: setEditTriggers(QAbstractItemView.EditTriggers triggers) 其中参数QAbstractItemView.EditTriggers triggers为...

老猿Python 2667

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

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

老猿Python 7405

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

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

老猿Python 2342
上一篇: Python学习随笔:使用xlwings读取和操作Excel文件
下一篇: PyQt学习随笔:使用PyCharm+PyQt开发遇到的坑
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、付费专栏及课程。

余额充值