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