代码示意:
class ItemWidget_action_cfg_w(QWidget):
...
# 如下方法是在指定item下插入新的item
def __do_add_item(self, item):
# 获取当前item row
row = self.__list_w.indexFromItem(item).row()
# 注意这里没有父类,解释见后面说明
new_item = QListWidgetItem()
# 创建自定义QWidget类对象
widget = ItemWidget_action_cfg_w(new_item, self.__list_w)
widget.signal_del_item.connect(self.__do_delete_item)
widget.signal_add_item.connect(self.__do_add_item)
# 在row+1 处插入新的item
self.__list_w.insertItem(row + 1, new_item)
# 这里告诉新的item要显示的是widget
self.__list_w.setItemWidget(new_item, widget)
从上图可知若要通过 QListWidget.insertItem 方法插入item,需要再创建 QListWidgetItem 时不要指定父类。
另一个要注意的地方是,先执行insertItem然后再执行setItemWidget。