QListWidget是一個用於顯示數據的列表,每個條目中都是一個QListWidgetItem對象;QListWidget可以設置多選;
常用方法如下:
常用信號:
例如:
1 #QListWidget 控件使用 2 from PyQt5.QtWidgets import QMessageBox,QListWidget,QListWidgetItem, QStatusBar, QMenuBar,QMenu,QAction,QLineEdit,QStyle,QFormLayout, QVBoxLayout,QWidget,QApplication ,QHBoxLayout, QPushButton,QMainWindow,QGridLayout,QLabel 3 from PyQt5.QtGui import QIcon,QPixmap,QStandardItem,QStandardItemModel,QCursor 4 from PyQt5.QtCore import QStringListModel,QAbstractListModel,QModelIndex,QSize,Qt 5 import sys 6 7 class WindowClass(QWidget): 8 9 def __init__(self,parent=None): 10 self.f="" 11 super(WindowClass, self).__init__(parent) 12 self.layout=QVBoxLayout() 13 self.resize(400,300) 14 self.view=QListWidget() 15 #self.view.setViewMode(QListWidget.ListMode) #QListWidget.IconMode 16 17 self.view.setLineWidth(50) 18 self.view.addItems(["C","A","D","S"]) 19 self.layout.addWidget(self.view) 20 self.setLayout(self.layout) 21 22 self.view.clicked.connect(self.check)#單擊選中某一個選項 23 ''''' 24 創建右鍵菜單 25 ''' 26 # 必須將ContextMenuPolicy設置為Qt.CustomContextMenu 27 # 否則無法使用customContextMenuRequested信號 28 self.setContextMenuPolicy(Qt.CustomContextMenu) 29 30 31 # 創建QMenu 32 self.contextMenu = QMenu(self) 33 self.actionA = self.contextMenu.addAction(QIcon("images/0.png"), u'| 刪除') 34 35 # 顯示菜單 36 self.customContextMenuRequested.connect(self.showContextMenu) 37 38 #點擊刪除menu 39 self.contextMenu.triggered[QAction].connect(self.remove) 40 41 def check(self,index): 42 r=index.row() 43 self.f=r; 44 def showContextMenu(self): 45 #如果有選中項,則顯示顯示菜單 46 items=self.view.selectedIndexes() 47 if items: 48 self.contextMenu.show() 49 self.contextMenu.exec_(QCursor.pos()) # 在鼠標位置顯示 50 def remove(self,qAction): 51 print(self.f) 52 #self.view.takeItem(self.f)#刪除行(實際上是斷開了與list的聯系) 53 54 #注意:removeItemWidget(self, QListWidgetItem) # 移除一個Item,無返回值 55 #注意:takeItem(self, int) # 切斷一個Item與List的聯系,返回該Item 56 self.view.removeItemWidget(self.view.takeItem(self.f)) #刪除 57 58 if __name__=="__main__": 59 app=QApplication(sys.argv) 60 win=WindowClass() 61 win.show() 62 sys.exit(app.exec_())