QListWidget的setItemWidget方法可以在任何位置插入小部件,而不仅限于末尾。下面是一个例子:
from PyQt5.QtWidgets import QApplication, QListWidget, QListWidgetItem, QWidget, QLabel
app = QApplication([])
list_widget = QListWidget()
# 添加 item
item1 = QListWidgetItem("Item 1")
list_widget.addItem(item1)
# 在第二个位置插入 item
item2 = QListWidgetItem("Item 2")
list_widget.insertItem(1, item2)
# 在第三个位置插入带有小部件的 item
item3 = QListWidgetItem()
widget = QWidget()
label = QLabel("Item 3")
widget.setLayout(QHBoxLayout())
widget.layout().addWidget(label)
list_widget.insertItem(2, item3)
list_widget.setItemWidget(item3, widget)
list_widget.show()
app.exec_()
这个例子创建了一个包含三个项目的QListWidget。第一个和第二个项目只是文本,而第三个项目包含一个小部件(QLabel),并在第二个和第三个项目之间插入。
注意,要在setItemWidget方法之前调用insertItem或addItem方法,以确保item已经存在于列表中。