列表視圖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_())