列表视图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_())