如何向QListWidget添加逻辑拖放

时间:2017-07-31 18:48:43

标签: pyqt pyqt4 qlistwidget

我是一个Python / PyQt(v4)新手,他正在继承QListWidget并利用其内部拖放机制:

from PyQt4.QtCore import *
from PyQt4.QtGui import *

class AlgorithmListControl(QListWidget):
    def __init__(self, parent = None):
        super(AlgorithmListControl, self).__init__(parent)

        self.setAcceptDrops(True)
        self.setDragEnabled(True)
        self.setDragDropMode(QAbstractItemView.InternalMove)

我对默认行为和外观感到满意,并且我可以在窗口小部件内部拖放项目。现在,我想添加一些在拖动操作开始时和放置操作结束后发生的自定义逻辑。我遇到的麻烦是如果我处理事件,例如dragEnterEvent如下:

def dragEnterEvent(self, event):
    ...

然后我不再获得漂亮的默认拖放行为(我无法将项目拖动到新位置,我没有得到水平插入指示器等)。如何保留标准的拖放行为,但在这两个事件点添加我的自定义逻辑?提前谢谢。

1 个答案:

答案 0 :(得分:1)

由于在使用相同名称时覆盖该方法,因此需要实现以标准方式发生的所有操作,或者在内部调用父(标准)方法。

由于函数super(),您可以使用继承从父类调用该方法,然后实现您自己的逻辑:

def dragEnterEvent(self, event):
    super().dragEnterEvent(event)
    print('enter')