为什么QListWidget把item拖拽到控件外就被删除了
时间: 2024-01-17 17:05:40 浏览: 93
Qt控件QListWidget实现鼠标拖拽Item换序
3星 · 编辑精心推荐
QListWidget的默认行为是在将item拖拽到控件外时将其删除。如果你不想让这种情况发生,你可以重新实现QListWidget的dragMoveEvent()方法来改变拖拽时的行为。在这个方法中,你可以检查鼠标的位置是否在控件内部,如果不是,你可以阻止默认行为。
以下是一个示例实现:
```python
from PyQt5.QtGui import QDragEnterEvent
from PyQt5.QtWidgets import QListWidget
class CustomListWidget(QListWidget):
def __init__(self, parent=None):
super().__init__(parent)
def dragMoveEvent(self, event: QDragEnterEvent) -> None:
if self.rect().contains(event.pos()):
event.accept()
else:
event.ignore()
```
在这个实现中,我们重写了dragMoveEvent()方法,并在其中检查鼠标的位置是否在控件内部。如果鼠标在控件内部,我们接受拖拽事件,否则我们忽略它。这将防止默认行为中删除拖拽的项目。
阅读全文