2017-01-26 30 views
0

У меня есть простое дерево в QTreeWidget (я использую pyqt, но я думаю, что это не важно). Когда я перемещаю элемент в этом дереве, я хочу изменить базу данных, поэтому я хочу получить этот объект объекта, родительский элемент этого элемента, перед перемещением и родительский элемент этого элемента после перемещения. Но я не понимаю, как я могу их получить. qtreewidget не имеет специального сигнала для перетаскивания.Получить источник перетаскивания и назначение в qtreewidget

ответ

0

Я нашел ответ для своей ситуации. Может быть, кто-то может быть заинтересованным:

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 

 Смежные вопросы

  • Нет связанных вопросов^_^