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

[PYQT5] ListView QStringListModel 增-删-改 实现 增-删-改 百度了半天都没有详细说的,半猜半试做出来,其中还有一些不太理解,先把我做出来的记录下来。 初步需要如下功能空间: listview pushbutton(删除按钮) lineedit(输入编辑栏)pushbutton(新增按钮) 基本界面如下: 一、实现界面布局及初始化 def initUI(self): layout = QGridLay... 阅读详情

一、QStringListModel介绍

QStringListModel是Qt提供的一个已经实现QAbstractItemModel相关接口的Model,适合于展示一系列字符串的简单视图如QListView对象和QComboBox对象。

QStringListModel提供了所有可编辑模型的标准函数,将字符串列表中的数据存储为一个一列多行的模型。

使用index(int row, int column = 0, QModelIndex parent = QModelIndex())函数获取与项对应的模型索引,使用flags(QModelIndex index)获取项标志;使用data()函数读取项数据,并使用setData()写入项数据,使用rowCount()函数访问模型数据的行数。

该模型可以用现有的字符串列表来构造,或者可以用setStringList()函数来设置字符串。字符串也可以用insertRows()函数以通常的方式插入,并用removeRows()删除。字符串列表的内容可以使用stringList()函数检索。

二、使用QStringListModel作为QListView的Model

使用QStringListModel作为QListView的Model的方法非常简单,先创建QStringListModel实例对象,如果数据未存储到Model中则将数据存储到Model,然后再将QListView对象的Model设置为刚创建的Model实例。步骤如下:

2.1、 创建QStringListModel实例对象

实例对象创建有两种方法:

  • 创建无数据的Model
    语法为:QStringListModel(QObject parent = None)
  • 创建Model同时初始化数据
    语法为:QStringListModel(strings,QObject parent = None)
    其中strings为要展示的字符串列表数据。

以上两种方法的实例代码:

self.model1 = QStringListModel()
strList = ["item1", "item2", "item3", "item4", "item5", "item6", "item7", "item8", "item9", "item10"]
self.model2 = QStringListModel(strList)

只是以上方法创建model后,model1中无数据,而model2中有数据

2.2、初始化model中的数据

如果创建的model中无数据,可以通过几种方法初始化model中的数据:

  • 使用setStringList(str)方法完成初始化,示例代码:
self.model1.setStringList(["item1", "item2", "item3", "item4", "item5", "item6", "item7", "item8", "item9", "item10"])
  • 使用insertRows()、index()、setData()方法组合实现
    insertRows是在model中插入空的数据记录,只是占据了数据位置,但没有实际的数据,需要通过setData来生成实际存储的数据。这种组合方法没有多大实际价值,具体方法的参数及含义在此不进行详细介绍,请参考如下示例代码:
        self.model = QStringListModel()
        self.model.insertRows(0,3)
        for i in range(4):
            index = self.model.index(i-1)
            self.model.setData(index,f"item{i}")
  • 使用视图的setModel(model)方法将model和view建立连接
    示例代码:
 self.listView.setModel(self.model)
2.3、示例代码及运行截图

本示例代码使用先创建对象再使用setStringList方法初始化数据:

 def initStringListModel(self):
        strList = ["item1", "item2", "item3", "item4", "item5", "item6", "item7", "item8", "item9", "item10"]
        self.model = QStringListModel()
        self.model.setStringList(strList )
        self.listView.setModel(self.model)

运行截图:
在这里插入图片描述

老猿Python,跟老猿学Python!

205.PyQt5_QAbstractItemModel_数据模型类基类 QAbstractItemModel 模型类基类描述子类化QAbstractItemModel常用枚举常用API可用信号该类是Qt所有模型类的基类,用于管理模型/视图结构中的数据。Qt的所有模型都需要子类化该类QAbstractItemModel 类定义了项目模型必须使用的标准接口,以便能够与模型/视图框架中的其他组件进行互操作正确用法是将其子类化以创建新模型。 阅读详情

相关推荐

PyQt5桌面GUI开发全解析:从核心原理到项目实战

桌面应用开发是软件工程的重要领域,其核心在于构建用户与系统交互的图形界面。PyQt5作为Python对Qt框架的完整绑定,继承了Qt近30年积累的跨平台能力与丰富组件库,通过信号槽机制实现高效的事件驱动编程。这一技术组合让开发者能够用Python快速构建专业级桌面软件,同时保持与原生C++应用相近的性能表现。在工程实践中,PyQt5特别适合数据处理工具、科学计算平台和工业控制软件的开发,其成熟的生态和稳定的API使其成为众多生产项目的首选。本文深入探讨PyQt5在GUI开发中的核心优势,并解析其与PySid

weixin_30417487的博客 306

QT5知识:字符串列表QStringListModel

QStringListModel提供了所有可编辑模型的标准函数,将字符串列表中的数据存储为一个一列多行的模型。换个说法,符号串的列表无法直接传入QListView对象和QComboBox,需要QStringListModel做为中间传递过程。...

gongdiwudu的专栏 7392

Qt框架入门:从信号槽到跨平台部署的C++ GUI开发全指南

C++ GUI开发是构建桌面应用的核心技术之一,其关键在于选择高效、跨平台的框架。Qt作为成熟的C++应用程序框架,通过独特的信号槽机制实现对象间通信,有效降低了模块耦合度,提升了代码可维护性。其元对象系统(MOC)在标准C++基础上提供了反射能力,支撑了信号槽、动态属性等高级特性。在工程实践中,Qt的模块化设计允许开发者按需引入功能,而qmake或CMake构建系统则管理着包含MOC预处理在内的完整编译流程。对于常见的“qt安装”与“环境配置”问题,官方Qt Creator提供了开箱即用的解决方案,而VS

weixin_30336061的博客 396

QStringListModel

QStringListModel

m0_73443478的博客 491

python中QStringList与QString、String互转

在使用pyQt进行GUI编程时,经常会遇到获取编辑框的内容等,其返回的是QString()和QStringList()类,简单的说,就是QT自己的String和list类,但是这些类不能和python的String和List类混用,需要转换一下。 1、QStringList转QString: from PyQt4.QtCore import *qList = QStringList

shawpan的专栏 1万+

PyQt学习笔记:在Python中使用Model/View架构的QStringListModel

在PyQt中,Model/View架构是一种常用的设计模式,用于实现数据与界面的分离和交互。在add_string()方法中,我们使用QInputDialog获取用户输入的新字符串,并将其添加到模型中。在上述代码中,我们创建了一个继承自QMainWindow的MainWindow类,并在其中定义了应用程序的主窗口。接下来,我们将创建一个简单的PyQt应用程序,其中包含一个列表视图(QListView),以及一个按钮用于添加新的字符串到列表中。运行上述代码,将会弹出一个带有初始字符串列表和添加按钮的窗口。

PixelEnigma的博客 217

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

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

greenspan的专栏 2180

使用Python开发QListView和Model

在本文中,我们将使用Python编写代码来创建一个包含QListView和自定义Model的简单应用程序。你可以根据自己的需求,进一步扩展和定制Model类,以满足特定的数据显示和操作要求。在上述代码中,我们将QListView控件设置为主窗口的中心部件,并创建了一个CustomModel实例作为数据模型,并将其设置为QListView的模型。运行以上代码,我们将得到一个简单的应用程序窗口,其中包含了一个QListView控件,显示了我们提供的数据项。运行应用程序的事件循环。

pytorchCode的博客 174

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

Model/View架构中的Model模型Model与数据源通信,为体系结构中的其他组件提供数据接口。与数据源通信的方式取决于数据源的类型(如文件、数据库、消息等)以及模型的实现方式。由于模型中的数据都是以项(item)为单位进行管理,所以Model模型又称为项模型(item models )。所有项模型(item models )类都是从基类QAbstractItemModel 类及其子类派生的...

weixin_39979489的博客 151

深入理解 QStringListModel 在Qt中的应用

本文还有配套的精品资源,点击获取 简介:在Qt的模型视图编程中, QStringListModel 组件用于处理和显示文本数据,其属于模型视图架构,允许字符串列表映射到可观察的数据模型。该组件支持字符串的添加、删除和修改操作,并通过视图组件展示。文章将详细介绍如何使用 QStringListModel ,包括其基本用法、信号与槽机制,以及在视图中...

weixin_42602241的博客 913

Zigbee通信(CC2530终端 + ESP32-C6协调器)

实现了CC2530 zigbee终端与ESP32-C6 zigbee协调器的通信交互。

Ecsply的博客 2565

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

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

老猿Python 2403

IGBT模块封装中的银烧结技术:为什么特斯拉和比亚迪都在用这种黑科技?

本文深入解析了IGBT模块封装中的银烧结技术,揭示了其作为功率半导体封装工艺关键升级的原因。该技术通过低温烧结形成高熔点、高导热导电的银连接层,显著提升了模块的功率循环寿命、散热能力和高温工作稳定性,这正是特斯拉、比亚迪等行业巨头采用此项黑科技以释放电动汽车电驱系统极致性能的核心所在。

yhn4567890的博客 833

PyQt(Python+Qt)学习随笔:视图中类QAbstractItemView的dragDropOverwriteMode属性不能覆盖写的问题

老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在《PyQt(Python+Qt)学习随笔:视图中类QAbstractItemView的dragDropOverwriteMode属性》中介绍了dragDropOverwriteMode属性,当时老猿使用并在其中提到了测试发现这个属性的覆盖存在问题,并反复测试也未找到问题的原因,这几天老猿找到了...

老猿Python 1110

基础的pdf病毒木马

基础的pdf病毒木马 环境: 攻击机:Kali 目标操作系统:Windows 10或Windows 7 (关闭防火墙和安全软件) 目标软件:Adobe Reader 8.1.2 msf框架搜索:adobe-pdf 1.打开msfconsole 2.搜索 adobe_pdf模块 3.加载攻击模块并设置payload 4.运行生成pdf 5.将pdf拖入到win10 6.打开msf,加...

小小猪的博客 4624

Cartographer全局重定位优化:无初始位姿约束的2万平工厂秒级定位实践

本文深入解析了Cartographer在2万平工业场景中的全局重定位优化实践,通过分支定界优化、子图动态加载和多传感器融合等关键技术,实现了无初始位姿约束下的秒级重定位。特别针对大场景下的快速重定位需求,优化后的系统在RK3588平台上表现出色,定位耗时从47秒降至1.8秒,成功率提升至91%,为工业自动化提供了高效解决方案。

rose2的博客 969

QStringListModel类

基于《Python Qt GUI与数据可视化编程》总结

qq_35412059的博客 1161

UE 顶点动画工具 (VAT)

导入模型需要勾选全精度UV。

iesoxj的博客 1642

C++ Qt开发:StringListModel字符串列表映射组件

`QStringListModel` 是 Qt 中用于处理字符串列表数据的模型类之一,它是 `QAbstractListModel` 的子类,用于在 Qt 的视图类(如 `QListView`、`QComboBox` 等)中显示字符串列表。该组件是用于在`Qt`中快速显示字符串列表的便捷模型类。该组件通常会配合`ListView`一起使用,例如将`ListView`组件与`Model`模型绑定,当`ListView`组件内有数据更新时,就可以利用映射将数据模型中的数值以字符串格式提取出来,同理也可实现将字符

微软技术分享 8697

Tmux学习总结

Tmux 重要概念 使用 Tmux 的时候千万不要去背指令,所有的指令都可以在 .tmux.conf 配置文件中绑定自己顺手的快捷键,也可以配置开启鼠标。 这个是我的配置文件:https://github.com/zuorn/tmux.conf 在Tmux逻辑中,需要分清楚Server > Session > Window > Pane这个大小和层级顺序是极其重要的,直接关系到工作效率: Server:是整个tmux的后台服务。有时候更改配置不生效,就要使用tmux kill-

满目星辰 579

PyTorch生成式人工智能(3)——使用PyTorch构建神经网络

在本节中,我们使用 PyTorch 在简单数据集上构建了一个神经网络,训练神经网络来映射输入和输出,并通过执行反向传播来更新权重值以最小化损失值,并利用 Sequential 类简化网络构建过程;介绍了获取网络中间值的常用方法,以及如何使用 save、load 方法保存和加载模型,以避免再次训练模型。

盼小辉丶的博客 1万+

Qt模型/视图 自定义模型(QAbstractItemModel)

自定义模型至少需要实现QAbstractItemModel类中的以下5个纯虚函数: columnCout()、rowCount()、index()、parent()、data() 为了能添加自已的数据到模型中,通常还需要重新实现setData()函数,若不重新实现setData()则无法向模型中添加数据。 自定义模型的基本原理及步骤如下 ①、数据:实际数据可使用QList、数组、整型、或单独的一个类来保存,数据可存放在模型中,也可存放在文件等其他地方。 ②、columnCout()、rowCoun..

hu626626的博客 3974

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

模型Model:字符串列表模型QStringListModel

(1)功能:处理字符串列表的数据模型,可作为QListView的数据模型,在界面上显示和编辑字符串列表。以下函数为重新实现的 QAbstractItemModel 类中的相应函数(这些函数会使用到)。所有 parent 应是一个无效索引,若 parent 是一个有效索引,则该函数将返回 0。QAbstractItemModel 保持一致,默认为空索引,表示在模型的顶层插入行。插入或删除 count 行,参数 parent 是可选的,仅用于与。,要在列表最后插入一行,参数row设置为列表当前的行数即可。

zxf347085420的博客 1355

精雕软件(JDpaint) 5.5 绿色版

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

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

QStringListModel类详细介绍

它专为简单的一维列表数据设计,是 Qt 模型/视图框架中最轻量化的模型之一,适用于需要快速显示和编辑字符串列表的场景(如。**,开发者可以快速实现简单列表的数据绑定和交互,是模型/视图框架中入门级的高效工具。是 PyQt5 中用于管理 ​。

wanglaqqqq的博客 524
上一篇: PyQt(Python+Qt)学习随笔:model/view架构中的排序和代理模型QSortFilterProxyModel
下一篇: PyQt(Python+Qt)学习随笔:model/view架构中支持QListView列表中展示图标的两种方法
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、付费专栏及课程。

余额充值