,你將需要實現一個dragEnterEvent,dragMoveEvent和dropEvent
要訪問下降QTreeWidgetItem(S),你這樣做正確的dropEvent
class myTreeWidget(QtGui.QTreeWidget):
def __init__(self, parent = None):
super(myTreeWidget, self).__init__(parent)
self.setAcceptDrops(True)
def dragEnterEvent(self, event):
print('dragEnterEvent happened')
event.acceptProposedAction()
def dragMoveEvent(self, event):
print('dragMoveEvent happened')
event.acceptProposedAction()
def dropEvent(self, event):
print('dropEvent happened')
widgetItemThatMoved=event.source().currentItem()
parentThatReceivedIt=self.itemAt(event.pos())
self.theFunc(parentThatReceivedIt,widgetItemThatMoved)
event.acceptProposedAction()
def functionToCallWhenDropped(self,theFunc):
#this method allows you to pass a reference to this class so you assign it to a local variable for easy calling.
self.theFunc=theFunc
內這將是很好添加一個額外的方法functionToCallWhenDropped這樣就可以有機會獲得父類的方法,在父類,你會做這樣的事情
def someMethod(self):
self.tw=myTreeWidget(parent)
self.tw.functionToCallWhenDropped(self.wasDropped)
def wasDropped(self, newParent, theMovedChild):
#this method will be called the very moment you drop the item
print(newParent.text(0)+" => "+theMovedChild.text(0))
I H這有助於某人。
嘿@Ajayi Oluwaseun Emmanuel 糾正我,如果我錯了,但這隻返回最後選擇的項目。如何在拖動後返回所有選定的項目?所以,如果我拖動5個項目,我有5個指向新項目的指針? – Dariusz