Pyqt开发Gui界面(三)—ListView的使用

问题说明

在listView控件中添加图片列表,并加入右键菜单操作。

Listview和Listwidget的区别

ListView 里没有自己的"模型"model,要自己建模来保存数据,这可以很大程度上降低数据冗余,提高程序的效率.但是要求我们对view/model框架比较了解,不适合新手使用.
ListWidget是ListView的子类,在ListWidget中已经帮我们定义好了一个模型.这个模型非常方便,十分全面.这样就可以直接在ListWidget里面添加数据,而不用在从新制定一个模型了.十分方便.
在很多情况下,只需要把一小部分的项呈现给用户,这就没必要使用model这样重量级的组件。PYQt为了方便起见也提供了一些方便的项视图类,分别是QListWidget,QTableWidget和QTreeWidget,使用这些类可以直接对item进行操作。这种实现很像Qt早期版本,组件中包含了相应的item,例如QTableWidget中包含有QTableWidgetItem等。但是对于很大的数据,我们则需要使用PYQt的view类,比如QListView,QTabelView和QTreeView,同时需要提供一个model,可以是自定义model,也可以是PYQt预置的model。例如,如果数据来自数据库,那么你可以使用QTabelView和QSqlTableModel这两个类
原文链接:https://blog.csdn.net/seicany/article/details/9705985

ListView添加图片列表

由于ListView中没有自己的模型,所以在向ListView控件中添加图片列表时要先给ListView定义一个model,即model = QStandardItemModel(),赋予ListView添加子项的功能。然后再从图片的保存文件中读取图片文件路径,以此路径当作Item的图标,代码如下:
self.item=QStandardItem(QIcon(str(self.videoFrame_path)+"\\"+str(image)),image)#self.videoFrame_path是图片的路径 model.appendRow(self.item)#添加进listView中

获取ListView中的Item总数

model = self.listView.model()
count = model.rowCount()

ListView右键删除操作

1、首先在类的构造函数中声明ListView中可显示右键菜单功能

self.listView.setContextMenuPolicy(3)
self.listView.customContextMenuRequested[QPoint].connect(self.listWidgetContext)# listview中右键菜单

2、创建右键菜单

popMenu = QMenu()
self.actionA = popMenu.addAction("删除")
self.actionA.triggered.connect(self.actionRemove)
popMenu.exec_(QCursor.pos())#在鼠标位置显示

3、删除功能函数,先获取文件路径,进而删除文件

selected = self.listView.selectedIndexes()#当前索引
itemmodel = self.listView.model()
for i in selected:
    os.remove(self.videoFrame_path+"\\"+i.data())#i.data()显示当前索引文件的名字,前面加上根路径即为文件绝对路径(在文件中删除)
    itemmodel.removeRow(i.row())#在listView中删除

4、链接
pyqt开发Gui界面(一)
pyqt开发Gui界面(二)

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值