def dropEvent(self, event: QtGui.QDropEvent): if not event.isAccepted() and event.source() == self: drop_row = self.drop_on(event) rows = sorted(set(item.row() for item in self.selectedItems())) rows_to_move: List[zlm_core.ZlmLayer] = [ self.item(row_index, 0).layer_inst for row_index in rows ] for row_index in reversed(rows): self.removeRow(row_index) if row_index < drop_row: drop_row -= 1 for row_index, layer in enumerate(rows_to_move): row_index += drop_row self.insertRow(row_index) item = QtWidgets.QTableWidgetItem(layer.name) item.layer_inst = layer self.setItem(row_index, 0, item) event.accept() # for row_index in range(len(rows_to_move)): # self.item(drop_row + row_index, 0).setSelected(True) super().dropEvent(event)
def dropEvent(self, event: QDropEvent): if not event.isAccepted() and event.source() == self: drop_row = self.drop_on(event) rows = sorted(set(item.row() for item in self.selectedItems())) rows_to_move = [[ QTableWidgetItem(self.item(row_index, column_index)) for column_index in range(self.columnCount()) ] for row_index in rows] for row_index in reversed(rows): self.removeRow(row_index) if row_index < drop_row: drop_row -= 1 for row_index, data in enumerate(rows_to_move): row_index += drop_row self.insertRow(row_index) for column_index, column_data in enumerate(data): self.setItem(row_index, column_index, column_data) event.accept() for row_index in range(len(rows_to_move)): for col_index in range(self.columnCount()): self.item(drop_row + row_index, col_index).setSelected(True) super().dropEvent(event)
def dropEvent(self, event: QDropEvent): # If drag and drop from self to self. if not event.isAccepted() and event.source() == self: # grab the row number of dragged row and its data row = self.selectedIndexes()[0].row() idx = self.cmodel.index(row, 2).data() # Get the row on which to drop dropRow = self.drop_on(event) dropIdx = self.cmodel.index(dropRow, 2).data() # If we drag from earlier row, handle index after deletion if row < dropRow: dropRow -= 1 com = self.clist.pop(row) self.clist.insert(dropRow, com) self.populateTable() # Reselect the dropped row (TODO: does this work?) self.selectRow(dropRow) # Resize the rows - they were expanding after drags for some reason # TODO: remove? self.resizeRowsToContents() else: super().dropEvent(event)
def dropEvent(self, event: QDropEvent): super().dropEvent(event) if event.isAccepted(): self.dataChanged.emit()