QListWidget详解
QListWidget
是 PyQt5 中一个方便的部件,用于创建和管理列表。它继承自 QListView
,并提供了一些高级功能,使得添加和管理列表项更加简单。以下是 QListWidget
的详解,包括基本用法、主要方法和属性以及如何与其他组件进行交互的代码示例。
基本用法
-
导入模块 要使用
QListWidget
,首先需要导入相关模块:from PyQt5.QtWidgets import QListWidget, QListWidgetItem, QApplication, QVBoxLayout, QWidget, QLabel import sys
-
创建 QListWidget 实例 创建
QListWidget
的实例并添加列表项:app = QApplication(sys.argv) list_widget = QListWidget()
-
添加列表项 使用
addItem
方法添加单个列表项,或使用addItems
方法添加多个列表项:list_widget.addItem("Item 1") list_widget.addItem("Item 2") list_widget.addItems(["Item 3", "Item 4", "Item 5"])
-
显示窗口 设置窗口大小并显示:
list_widget.setWindowTitle("QListWidget Example") list_widget.resize(300, 200) list_widget.show() sys.exit(app.exec_())
主要方法和属性
- 添加和删除项
addItem(item)
: 添加单个列表项。addItems(items)
: 添加多个列表项。takeItem(row)
: 删除并返回指定行的列表项。clear()
: 清空所有项。
- 项操作
count()
: 返回列表项的数量。item(row)
: 返回指定行的列表项。row(item)
: 返回指定列表项的行号。currentItem()
: 返回当前选中的列表项。currentRow()
: 返回当前选中项的行号。setCurrentItem(item)
: 设置当前选中的列表项。setCurrentRow(row)
: 设置当前选中的行。
- 信号和槽
itemClicked(item)
: 单击列表项时发射信号。itemDoubleClicked(item)
: 双击列表项时发射信号。itemChanged(item)
: 列表项改变时发射信号。currentItemChanged(current, previous)
: 当前选中项改变时发射信号。
代码示例
以下是一个完整的示例,展示了如何使用 QListWidget
以及如何响应用户的交互:
from PyQt5.QtWidgets import QListWidget, QListWidgetItem, QApplication, QVBoxLayout, QWidget, QLabel
import sys
class ListWidgetDemo(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('QListWidget Demo')
self.setGeometry(100, 100, 400, 300)
self.list_widget = QListWidget(self)
self.list_widget.addItems(["Item 1", "Item 2", "Item 3", "Item 4", "Item 5"])
self.label = QLabel("Selected Item Info", self)
layout = QVBoxLayout(self)
layout.addWidget(self.list_widget)
layout.addWidget(self.label)
self.list_widget.itemClicked.connect(self.onItemClicked)
self.setLayout(layout)
def onItemClicked(self, item):
self.label.setText(f"Selected: {item.text()}")
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = ListWidgetDemo()
demo.show()
sys.exit(app.exec_())
示例界面如图所示:
这个示例展示了一个包含五个列表项的 QListWidget
,并且当用户点击某个项时,在窗口底部的标签中显示该项的信息。
通过上述步骤和示例,应该能够掌握 QListWidget
的基本用法,并在 PyQt5 应用程序中实现列表视图功能。