列表视图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 @ 2019-02-15 17:16  天子骄龙  阅读(4510)  评论(0编辑  收藏  举报