0
我在QTreeWidget中有簡單的樹(我使用pyqt,但我認爲它不重要)。當我在此樹中移動項目時,我想更改數據庫,所以我想要在移動之前獲取此項目對象,此項目的父項以及此項目的父項。但我不明白我怎麼能得到它們。 qtreewidget沒有特別的拖放信號。在qtreewidget中獲取拖放源和目的地
我在QTreeWidget中有簡單的樹(我使用pyqt,但我認爲它不重要)。當我在此樹中移動項目時,我想更改數據庫,所以我想要在移動之前獲取此項目對象,此項目的父項以及此項目的父項。但我不明白我怎麼能得到它們。 qtreewidget沒有特別的拖放信號。在qtreewidget中獲取拖放源和目的地
我找到了我的情況的答案。可能有些人可能會感興趣:
class Ui_MainWindow(object): # automatically generated with pyuic5
def setupUi(self, MainWindow):
...
self.recordsTree = QtWidgets.QTreeWidget(self.centralWidget)
...
class CustomTree(object):
def startDrag(self, actions):
row = self.selectedItems()[0]
self._prev_parent = row.parent().data(0, 0)
self._what_move = row.data(0,0)
return QTreeWidget.startDrag(self, actions)
def dropEvent(self, event):
row_index = self.indexAt(event.pos()).row()
self._new_parent = self.topLevelItem(row_index).data(0, 0)
my_custom_collback(self._prev_parent, self._what_move, self._new_parent) # <- that what i needed
return QTreeWidget.dropEvent(self, event)
class MainWindow(Ui_MainWindow):
def setupUi(self, m):
r = super(MainWindow, self).setupUi(m)
self.recordsTree.startDrag = types.MethodType(CustomTree.startDrag, self.recordsTree)
self.recordsTree.dropEvent = types.MethodType(CustomTree.dropEvent, self.recordsTree)
return r