PyQt5-高级控件使用(QListWidget)

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_())

 

posted @ 2018-12-06 16:51  zyg_100  阅读(13347)  评论(0编辑  收藏  举报