Exemplo n.º 1
0
 def dropEvent(self, event: QDropEvent):
     if event.mimeData().hasText():
         if self.startRow != self.targetRow - 1 and self.startRow != self.targetRow:
             print('move ', self.startRow, ' to ', self.targetRow)
             if self.targetRow > self.startRow:
                 self.model.moveProcess(self.startRow, self.targetRow - 1)
             else:
                 self.model.moveProcess(self.startRow, self.targetRow)
         event.acceptProposedAction()
         return
     event.ignore()
     QTableView.dropEvent(self, event)
Exemplo n.º 2
0
    def dropEvent(self, event):
        if event.source() == self and (event.dropAction() == Qt.MoveAction
                                       or self.dragDropMode()
                                       == QAbstractItemView.InternalMove):
            success, row, col, topIndex = self.dropOn(event)
            if success:
                selRows = self.getSelectedRowsFast()

                top = selRows[0]
                # print 'top is %d'%top
                dropRow = row
                if dropRow == -1:
                    dropRow = self.rowCount()
                # print 'dropRow is %d'%dropRow
                offset = dropRow - top
                # print 'offset is %d'%offset

                for i, row in enumerate(selRows):
                    r = row + offset
                    if r > self.rowCount() or r < 0:
                        r = 0
                    self.insertRow(r)
                    # print 'inserting row at %d'%r

                selRows = self.getSelectedRowsFast()
                # print 'selected rows: %s'%selRows

                top = selRows[0]
                # print 'top is %d'%top
                offset = dropRow - top
                # print 'offset is %d'%offset
                for i, row in enumerate(selRows):
                    r = row + offset
                    if r > self.rowCount() or r < 0:
                        r = 0

                    for j in range(self.columnCount()):
                        # print 'source is (%d, %d)'%(row, j)
                        # print 'item text: %s'%self.item(row,j).text()
                        source = QTableWidgetItem(self.item(row, j))
                        # print 'dest is (%d, %d)'%(r,j)
                        self.setItem(r, j, source)

                # Why does this NOT need to be here?
                # for row in reversed(selRows):
                # self.removeRow(row)

                event.accept()

        else:
            QTableView.dropEvent(event)