列表视图QlistView

列表视图QlistView要配合setModel模型一起使用

 

 

例子一 QStringListModel()  字符串列表模型

 

复制代码
 1 import sys
 2 from PyQt5.QtWidgets import QApplication,QWidget,QVBoxLayout,QListView,QMessageBox
 3 from PyQt5.QtCore import QStringListModel
 4 
 5 class Demo(QWidget):
 6     def __init__(self,parent=None):
 7         super(Demo, self).__init__()
 8 
 9         
10         self.resize(300,270)
11         self.setWindowTitle('QListView 例子')
12 
13         layout=QVBoxLayout()
14 
15         self.listview=QListView()  #实例化列表视图
16 
17         slm=QStringListModel()  #实例化字符串列表模型
18         self.qList=['Item 1','Item 2','Item 3','Item 4']
19 
20         slm.setStringList(self.qList) #给字符串列表模型对象添加数据-字符串列表
21 
22         self.listview.setModel(slm)  #给列表视图设置模型
23 
24         self.listview.clicked.connect(self.clicked)  #列表视图被单击时触发信号
25         #此信号会自动发出一个参数:被选中项的信息对象
26 
27         layout.addWidget(self.listview)  #【QListView好像只能在布局控件中才能显示??】
28         self.setLayout(layout)
29 
30 
31 
32     def clicked(self,qModelIndex):
33         print(qModelIndex)     #<PyQt5.QtCore.QModelIndex object at 0x00000025A764BC88>
34         print(qModelIndex.row())   #获取选中项的索引号
35         #提示信息弹窗,你选择的信息
36         QMessageBox.information(self,'ListWidget','你选择了:'+self.qList[qModelIndex.row()])
37 if __name__ == '__main__':
38     app=QApplication(sys.argv)
39     win=Demo()
40     win.show()
41     sys.exit(app.exec_())
复制代码

 

self.listview.doubleClicked.connect(self.aa) #列表视图被双击时触发信号
# 此信号会自动发出一个参数:被选中项的信息对象




 例子二  QDirModel 目录模型

 

复制代码
 1 import sys
 2 from PyQt5.QtCore import Qt
 3 from PyQt5.QtWidgets import QApplication, QSplitter, QListView, QTreeView, QTableView, QDirModel,QWidget
 4 
 5 class Demo(QWidget):
 6     def __init__(self):
 7         super(Demo, self).__init__()
 8         self.resize(800,220)
 9         self.dir_model = QDirModel(self)  # 实例化目录模型QDirModel
10 
11         self.list_view = QListView(self)
12         self.tree_view = QTreeView(self)
13         self.table_view = QTableView(self)
14         self.list_view.setModel(self.dir_model) #给列表视图设置模型【目录模型】
15         self.tree_view.setModel(self.dir_model) #给树形视图设置模型【目录模型】【列出目录-非常好】
16         self.table_view.setModel(self.dir_model)#给表格视图设置模型
17         self.tree_view.move(270,0)
18         self.table_view.move(540,0)
19 
20         self.tree_view.doubleClicked.connect(self.show_func) #双击树形视图时发出信号
21         #此信号会自动发出包含被双击项信息的参数
22 
23     
24     def show_func(self, index):
25 
26         self.list_view.setRootIndex(index)  #设置列表视图的根索引。把index项目做为列表视图的根索引并显示出来
27         self.table_view.setRootIndex(index) #设置表格视图的根索引
28 
29 
30 if __name__ == '__main__':
31     app = QApplication(sys.argv)
32     demo = Demo()
33     demo.show()
34     sys.exit(app.exec_())
复制代码

 

posted @   天子骄龙  阅读(4580)  评论(0编辑  收藏  举报
编辑推荐:
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
阅读排行:
· What?废柴, 还在本地部署DeepSeek吗?Are you kidding?
· 程序员转型AI:行业分析
· 深入集成:使用 DeepSeek SDK for .NET 实现自然语言处理功能
· 为DeepSeek添加本地知识库
· .NET程序员AI开发基座:Microsoft.Extensions.AI
点击右上角即可分享
微信分享提示

目录导航