QListWidget用于从列表中添加或删除项目。列表中的每个项目都是一个 QListWidgetItem 对象。ListWidget 可以设置为多选。

二、 学习目标

1.QListWidget常用方法

2.QListWidget常用信号

3.QListWidget组件的应用

三、 知识点

1.【QListWidget、QListWidgetItem常用方法】

QListWidget常用方法

setCheckState(state) 设置复选框的勾选状态
Qt.Checked:选中状态
Qt.PartiallyChecked:半选中状态
Qt.Unchecked:没有被选中 icon() 返回列表项的图标 setIcon(icon) 设置列表项的图标 isHidden() 返回列表项是否隐藏,如果隐藏返回True;不隐藏返回False setHidden(hide) 设置列表项是否隐藏,如果True则隐藏;False则不隐藏 text() 返回列表项的文本 setText(text) 设置列表项的文本 flags() 返回列表项的项目标志 setFlags(flags) 设置列表项的项目标志设置为flags

Qt.ItemFlag的取值及含义如下:

2.【QListWidget常用信号】

QListWidget常用信号

from PyQt5.QtCore import Qt from PyQt5.QtGui import QIcon from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QListWidget, QListWidgetItem class QmyWidget(QWidget): def __init__(self, parent=None): super().__init__(parent) # 调用父类的构造函数,创建QWidget窗体 self.setupUi() def setupUi(self): """页面初始化""" # 设置窗体大小及标题 self.resize(500, 400) self.setWindowTitle("QListWidget组件示例") # 创建布局 self.layout = QVBoxLayout() # 创建QListWidget组件 self.listWidget = QListWidget() self.listWidget.addItem("Item 1") # 添加item self.listWidget.addItem("Item 2") self.listWidget.addItem("Item 3") self.listWidget.addItem("Item 4") # self.listWidget.addItems(["Item 1", "Item 2", "Item 3", "Item 4"]) # 添加多个item # QListWidget组件绑定信号 self.listWidget.itemClicked.connect(self.on_listWidget_itemClicked) # 创建两个按钮组件 self.button1 = QPushButton("新增Item", self) self.button1.clicked.connect(self.insert_item) # 为button绑定槽函数 self.button2 = QPushButton("删除Item", self) self.button2.clicked.connect(self.delete_item) # 为button绑定槽函数 self.button3 = QPushButton("查询Item", self) self.button3.clicked.connect(self.select_item) # 为button绑定槽函数 # 将组件添加到布局中 self.layout.addWidget(self.listWidget) self.layout.addWidget(self.button1) self.layout.addWidget(self.button2) self.layout.addWidget(self.button3) # 为窗体添加布局 self.setLayout(self.layout) def insert_item(self): """新增item槽函数""" print("item新增成功!") # 方式一:新增文本item self.listWidget.insertItem(0, "Item Text") # 方式二:新增QListWidgetItem对象item item_new = QListWidgetItem() item_new.setText("Item Obj") # 为item设置文本 item_new.setCheckState(False) # 为item设置复选状态,不勾选 item_new.setIcon(QIcon("logo.png")) # 为item设置图标 item_new.setFlags(Qt.ItemIsEnabled | Qt.ItemIsEditable | Qt.ItemIsUserCheckable) # 为item设置标志 self.listWidget.insertItem(0, item_new) # 方式三:新增其他部件的item item_button = QListWidgetItem() button = QPushButton("Button") self.listWidget.insertItem(0, item_button) self.listWidget.setItemWidget(item_button, button) # 为item设置按钮部件 def delete_item(self): """删除item槽函数""" print("item删除成功!") # 方式一:按行索引删除item对象 self.listWidget.takeItem(0) # 方式一:按item对象删除item的小部件 current_item = self.listWidget.currentItem() self.listWidget.removeItemWidget(current_item) def select_item(self): """查询item槽函数""" print("item查询成功!") # 隐藏所有的列表项 for i in range(4): self.listWidget.item(i).setHidden(True) # 查询Item 1并取消隐藏 item_list = self.listWidget.findItems("Item 1", Qt.MatchContains | Qt.MatchRecursive) for item in item_list: item.setHidden(False) def on_listWidget_itemClicked(self, item): """槽函数""" print(item.text()) if __name__ == '__main__': app = QApplication(sys.argv) myMain = QmyWidget() myMain.show() sys.exit(app.exec_())