2017-07-31 76 views
0

我是誰繼承了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

由於您在使用相同名稱時覆蓋該方法,因此需要實現以標準方式發生的所有操作,或者調用其中的父級(標準)方法。

您可以從父類繼承調用該方法,由於功能super(),然後實現自己的邏輯:

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

當然!我怎麼能沒有意識到這一點?這次真是萬分感謝。 – LKeene