[pyqt5]QListView增删改查和添加右键菜单

将一批数据list加入到QListView

        slm = QStringListModel()  # 创建modelslm.setStringList(['111', '222', '333'])  # 将数据设置到modelself.listView.setModel(slm)

设置某行被选中,这里以第一行选中为例子

        model_index = slm.index(0, 0)self.listView.setCurrentIndex(model_index)slm.setData(model_index, (255, 0, 0), Qt.BackgroundColorRole)

修改某一行(比如第2行改成aaaaa)

slm = QStringListModel()  # 创建model
slm.setStringList(['111', '222', '333'])  # 将数据设置到model
self.listView.setModel(slm)
slm.setData(slm.index(1), "aaaaa")

删除某行

 indexes = self.listView.selectedIndexes()if indexes:index = indexes[0]slm.removeRow(index.row())

给QListView添加一行数据

 row = slm.rowCount()value = '444'slm.insertRow(row)slm.setData(slm.index(row), value)

给ListView添加右键菜单

 self.listView.setContextMenuPolicy(3)self.listView.customContextMenuRequested[QPoint].connect(self.listWidgetContext)def listWidgetContext(self, point):popMenu = QMenu()popMenu.addAction("添加")popMenu.addAction("修改")popMenu.addAction("删除")popMenu.exec_(QCursor.pos())

清空QListView

        slm = QStringListModel()  # 创建modelslm.setStringList([])  # 将数据设置到modelself.listView.setModel(slm)

给QListView每一行前面加个小图标

       data_list = [{'img': "football.png", "title": "足球"},{"img": "basketball.png", "title": "篮球"},{"img": "valleyball.png", "title": "排球"}]model = QStandardItemModel()for data in self.data_list:item = QStandardItem(QIcon(data["img"]), data["title"])model.appendRow(item)self.listView.setModel(model)

下面给个完整代码大家可以直接跑起来

# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'listviewtest.ui'
#
# Created by: PyQt5 UI code generator 5.15.7
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import QStringListModel, Qt, QPoint
from PyQt5.QtGui import QCursor
from PyQt5.QtWidgets import QMenuclass Ui_MainWindow(object):def setupUi(self, MainWindow):MainWindow.setObjectName("MainWindow")MainWindow.resize(800, 600)self.centralwidget = QtWidgets.QWidget(MainWindow)self.centralwidget.setObjectName("centralwidget")self.listView = QtWidgets.QListView(self.centralwidget)self.listView.setGeometry(QtCore.QRect(100, 30, 551, 441))self.listView.setObjectName("listView")slm = QStringListModel()  # 创建modelslm.setStringList(['111', '222', '333'])  # 将数据设置到modelself.listView.setModel(slm)# 设置选择某行model_index = slm.index(0, 0)self.listView.setCurrentIndex(model_index)slm.setData(model_index, (255, 0, 0), Qt.BackgroundColorRole)# 删除某行indexes = self.listView.selectedIndexes()if indexes:index = indexes[0]slm.removeRow(index.row())# 添加某行row = slm.rowCount()value = '444'slm.insertRow(row)slm.setData(slm.index(row), value)# 添加右键菜单self.listView.setContextMenuPolicy(3)self.listView.customContextMenuRequested[QPoint].connect(self.listWidgetContext)# 清空列表# slm = QStringListModel()  # 创建model# slm.setStringList([])  # 将数据设置到model# self.listView.setModel(slm)MainWindow.setCentralWidget(self.centralwidget)self.menubar = QtWidgets.QMenuBar(MainWindow)self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 30))self.menubar.setObjectName("menubar")MainWindow.setMenuBar(self.menubar)self.statusbar = QtWidgets.QStatusBar(MainWindow)self.statusbar.setObjectName("statusbar")MainWindow.setStatusBar(self.statusbar)self.retranslateUi(MainWindow)QtCore.QMetaObject.connectSlotsByName(MainWindow)def listWidgetContext(self, point):popMenu = QMenu()popMenu.addAction("添加")popMenu.addAction("修改")popMenu.addAction("删除")popMenu.exec_(QCursor.pos())def retranslateUi(self, MainWindow):_translate = QtCore.QCoreApplication.translateMainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))if __name__ == "__main__":import sysapp = QtWidgets.QApplication(sys.argv)MainWindow = QtWidgets.QMainWindow()ui = Ui_MainWindow()ui.setupUi(MainWindow)MainWindow.show()sys.exit(app.exec_())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/5004.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

古代政府机构及官员品级

我国古代官员职位各历史阶段不同,分类繁多。 中央官制历史沿袭 战国时,各国国君之下设相与将,分掌文武权柄。我们熟知的例子有,赵慧文王以蔺相如为相,廉颇为将。但同时期楚国最高长官为令尹,武官是上柱国…

[QT编程系列-22]:基本框架 - QT常见数据结构:QString、QList、QVector、QMap、QHash、QSet、QPair快览

目录 1. QT常见数据结构概述 2. QList与QVector比较 3. QPair和QMap比较 4. QT数据结构与STL库数据结构比较 5. QT数据结构与STL库数据结构性能比较 1. QT常见数据结构概述 在Qt中,有几个主要的数据结构常用于处理和组织数据,包括: QS…

数据库用户管理

数据库用户管理 一、创建: 1.新建用户: CREATE USER 用户名来源地址 [IDENTIFIED BY [PASSWORD] 密码];‘用户名’:指定将创建的用户名. ‘来源地址’:指定新创建的用户可在哪些主机上登录,可使用IP地址、网段、主机…

Docker 应用容器引擎

Docker 应用容器引擎 一、Docker是什么二、Docker安装和查看1、docker安装2、docker版本信息查看3、docker信息查看 三、镜像操作四、容器操作1、容器创建2、创建并启动容器3、容器的进入4、复制5、容器的导入和导出6、删除容器 一、Docker是什么 是一个开源的应用容器引擎&…

ROS:nodelet

目录 一、前言二、概念三、作用四、使用演示4.1案例简介4.2nodelet 基本使用语法4.3内置案例调用 五、nodelet实现5.1需求5.2流程5.3准备5.4创建插件类并注册插件5.5构建插件库5.6使插件可用于ROS工具链5.6.1配置xml5.6.2导出插件 5.7执行 一、前言 ROS通信是基于Node(节点)的…

【动手学深度学习】--15.含并行连结的网络GoogLeNet

文章目录 含并行连结的网络GoogLeNet1.Inception块2.GoogLeNet模型3.训练模型 含并行连结的网络GoogLeNet 学习视频:含并行连结的网络 GoogLeNet / Inception V3【动手学深度学习v2】 官方笔记:含并行连结的网络(GoogLeNet) 1.…

【云原生】容器镜像

v ljx97609760 一起沟通学习 容器镜像 容器镜像(Image)所承载的是封装了应用程序及其所有软件依赖的二进制数据。 容器镜像是可执行的软件包,可以单独运行 你通常会创建应用的容器镜像并将其推送到某仓库(Registry)&…

Appium-Python-Client 源码剖析 (一) driver 的元素查找方法

目录 前言 源码版本:0.9 结构图: mobileby.py appium 的 webdriver.py selenium 的 webdriver.py seleniumdriver appiumdriver 前言 Appium-Python-Client是一个用于Python语言的Appium客户端库,它提供了丰富的API和功能,用于编写和…

【LeetCode】594. 最长和谐子序列

594. 最长和谐子序列(简单) 方法:哈希表计数 思路 题目规定的「和谐子序列」中的最值差值正好为 1,因而子序列排序后必然符合[a,a,.., a 1,a1]形式,即符合条件的和谐子序列长度为相邻两数(差值为 1)的出现次数之和。…

国产单片机(沁恒微WCH)CH32V307评估板初探

国产单片机(沁恒微WCH)CH32V307评估板初探 关于沁恒微:国产芯厂家、官网链接 公司简介 - 南京沁恒微电子股份有限公司 (wch.cn) 开发板资源: 评估板应用于 CH32V307 芯片的开发,IDE 使用 MounRiver 编译器,可选择使用板载或独…

为何异地销号这么难?这些注意事项要熟记!

最近有不少小伙伴私信小编,他们在网上办理的大流量手机号卡,用了一段时间之后想换其他的卡,所以想注销当前用的卡,但是注销的时候确实屡屡碰壁,程序还比较繁琐,有的甚至申请注销了几个月还注销不掉&#xf…

面向对象Java基础

前言 看大话设计模式的时候,发现自己的基础不是很扎实,重新回顾一些存在有点点不确定的内容,并从书中截取下来,做成笔记快速复习。 1、字段和属性 字段:用private修饰,也叫私有变量。属性:字…

关于uniapp分享功能实现

创建一个混入 export default {data() {return {//设置默认的分享参数//如果页面不设置share,就触发这个默认的分享share: {title: 商会宝,//自定义标题path: /pages/home/home?appId${uni.getStorageSync("appid")}, //默认跳转首页imageUrl: , //可…

Microsoft Outlook 共享收发邮件的权限给其他人

点击File 点击Account Settings→DelegateAccess 点击Add

[java安全]CommonsCollections1(LazyMap)

文章目录 【java安全】CommonsCollections1(LazyMap)前言LazyMap如何创建LazyMap对象?如何调用LazyMap的get()方法?如何触发AnnotationInvocationHandler#invoke()方法?POC总结参考 【java安全】CommonsCollections1(LazyMap) 前言 前面我们…

菜单 三级检索的实现,可配置搜索是否包含标题

const asideTreeDataOrigin [ //? 原始的侧边栏数据,不可修改 ]; let asideTreeData JSON.parse(JSON.stringify(asideTreeDataOrigin)); //? 动态的实时展示的侧边栏数据const menuCheck (val, menuItem) > menuItem.name.indexOf(val) > -1 || menuIte…

Hadoop: High Available

序言 在Hadoop 2.X以前的版本,NameNode面临单点故障风险(SPOF),也就是说,一旦NameNode节点挂了,整个集群就不可用了,而且需要借助辅助NameNode来手工干预重启集群,这将延长集群的停…

Python学习笔记-Windows下VirtualEnv+VSCode中虚拟环境配置

1 VirtualEnv简介 VirtualEnv是一个虚拟化环境,是独立开的开发环境,在一个文件夹中创建的独立虚拟环境,可以分隔开不同项目,开发互不影响。 优点如下: 使不同的应用开发环境独立,避免互相干扰环境升级不…

RxSwift 使用方式

背景 最近项目业务,所有模块已经支持Swift混编开发,正在逐步使用Swift 方式进行开发新业务,以及逐步替换老业务方式进行发展,所以使用一些较为成熟的Swift 的三方库,成为必要性,经过调研发现RxSwift 在使用…

lvs使用

1.前言 LVS(Linux Virtual Server)是一个基于 Linux 内核的负载均衡器,用于分发网络流量和将请求转发给后端服务器。LVS 提供了多种负载均衡算法和转发模式,以满足不同场景和需求的负载均衡需求,在LVS中定义虚拟服务的…