MyQListWidget
QListWidget中的要支持拖拽添加和删除item项,则需要继承实现几个方法。
这是我自己写的一个支持双击编辑、拖拽添加文件,拖拽删除的子类。拖拽删除的实现借助了另一个控件。
# listwidget.pyw
from typing import Optional
from PyQt5.QtWidgets import QListWidget, QWidget, QAbstractItemView, QListWidgetItem
from PyQt5.QtGui import QDragEnterEvent, QDropEvent, QDragMoveEvent, QKeyEvent
from PyQt5.QtCore import Qt, QModelIndex
class MyListWidget(QListWidget):
"""支持拖拽的QListWidget"""
def __init__(self, parent: Optional[QWidget]=None) -> None:
super().__init__(parent)
# 拖拽设置
self.setAcceptDrops(True)
self.setDragEnabled(True)
self.setDragDropMode(QAbstractItemView.DragDrop) # 设置拖放
self.setSelectionMode(QAbstractItemView.ExtendedSelection) # 设置选择多个
self.setDefaultDropAction(Qt.CopyAction)
# 双击可编辑
self.edited_item = self.currentItem()
self.close_flag = True
self.doubleClicked.connect(self.item_double_clicked)
self.currentItemChanged.connect(self.close_edit)
def keyPressEvent(self, e