QListView用於展示數據,子類是QListWidget。QlistView基於模型Mode,需要程序創建Model然后保存數據;
QListWidget是一個升級版的QlistView,它建立了一個數據存儲模型(QListWidgetItem),直接調用addItems()函數即可添加條目(Item)
常用方法如下:
常用信號:
例如:
1 #QListView使用 2 from PyQt5.QtWidgets import QMessageBox,QListView, QStatusBar, QMenuBar,QMenu,QAction,QLineEdit,QStyle,QFormLayout, QVBoxLayout,QWidget,QApplication ,QHBoxLayout, QPushButton,QMainWindow,QGridLayout,QLabel 3 from PyQt5.QtGui import QIcon,QPixmap,QStandardItem,QStandardItemModel 4 from PyQt5.QtCore import QStringListModel,QAbstractListModel,QModelIndex,QSize 5 import sys 6 7 class WindowClass(QMainWindow): 8 def __init__(self,parent=None): 9 super(WindowClass, self).__init__(parent) 10 self.layout=QVBoxLayout() 11 self.resize(200,300) 12 listModel=QStringListModel() 13 listView=QListView() 14 items=["張三","李四","小明","JONES"] 15 16 listModel.setStringList(items) 17 listView.setModel(listModel) 18 19 listView.clicked.connect(self.checkItem) 20 21 self.layout.addWidget(listView) 22 widget = QWidget() 23 widget.setLayout(self.layout) 24 self.setCentralWidget(widget) 25 26 def checkItem(self,index): 27 QMessageBox.information(self,"ListView","選擇項是:%d"%(index.row())) 28 29 if __name__=="__main__": 30 app=QApplication(sys.argv) 31 win=WindowClass() 32 win.show() 33 sys.exit(app.exec_())
以上是一個QStringListView效果;
下面是一個QListView或者QIconView實現的,帶有圖標的效果,如下程序:
1 #QListView使用 2 from PyQt5.QtWidgets import QMessageBox,QListView, QStatusBar, QMenuBar,QMenu,QAction,QLineEdit,QStyle,QFormLayout, QVBoxLayout,QWidget,QApplication ,QHBoxLayout, QPushButton,QMainWindow,QGridLayout,QLabel 3 from PyQt5.QtGui import QIcon,QPixmap,QStandardItem,QStandardItemModel 4 from PyQt5.QtCore import QStringListModel,QAbstractListModel,QModelIndex,QSize 5 import sys 6 7 class WindowClass(QMainWindow): 8 def __init__(self,parent=None): 9 super(WindowClass, self).__init__(parent) 10 self.layout=QVBoxLayout() 11 self.resize(200,300) 12 listView=QListView() 13 listView.setViewMode(QListView.ListMode)#或者使用QListView.IconMode QListView.ListMode 14 #listView.setMovement(QListView.Static) 15 listView.setIconSize(QSize(20,20))#圖標的大小(原始圖標大小如果100,100,此時設置草果原始大小則失效) 16 listView.setGridSize(QSize(60,40))#每個選項所在網格大小(每個選項外層grid寬高) 17 listView.setMaximumHeight(200)#listView整體最大高度 18 #listView.setMinimumSize(QSize(200,200))#listView最小面積(一般如果設置最大高和寬屬性后就不設置這個屬性了) 19 #listView.setMaximumSize(QSize(500,500))#listVIew最大面積(一般如果設置最大高和寬屬性后就不設置這個屬性了) 20 listView.setMinimumHeight(120)#listView最小高度 21 22 listView.setResizeMode(QListView.Adjust) 23 #listView.setMovement(QListView.Static)#設置圖標可不可以移動,默認是可移動的,但可以改成靜態的: 24 25 self.item_1=QStandardItem(QIcon("./image/save.ico"), "普通員工A"); 26 self.item_2 = QStandardItem(QIcon("./image/save.ico"), "普通員工B"); 27 28 model=QStandardItemModel() 29 model.appendRow(self.item_1) 30 model.appendRow(self.item_2) 31 listView.setModel(model) 32 33 listView.clicked.connect(self.checkItem) 34 35 self.layout.addWidget(listView) 36 widget = QWidget() 37 widget.setLayout(self.layout) 38 self.setCentralWidget(widget) 39 40 41 def checkItem(self,index): 42 QMessageBox.information(self,"ListView","選擇項是:%d"%(index.row())) 43 44 if __name__=="__main__": 45 app=QApplication(sys.argv) 46 win=WindowClass() 47 win.show() 48 sys.exit(app.exec_())