You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

32 lines
1.2 KiB
Python

from PyQt5.QtWidgets import QTableView, QAbstractItemView, QHeaderView
class tableView(QTableView):
def __init__(self, *args, **kwargs):
QTableView.__init__(self, *args, **kwargs)
self.setDragEnabled(True)
self.setAcceptDrops(True)
self.viewport().setAcceptDrops(True)
self.setDragDropOverwriteMode(False)
self.setDropIndicatorShown(True)
self.setEditTriggers(QAbstractItemView.NoEditTriggers)
self.setSelectionMode(QAbstractItemView.SingleSelection)
self.setSelectionBehavior(QAbstractItemView.SelectRows)
self.setDragDropMode(QAbstractItemView.InternalMove)
self.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
def dragEnterEvent(self, event):
position = event.pos()
self.source_first = self.indexAt(position).row()
self.source_first_index = self.indexAt(position)
event.accept()
def dropEvent(self, event):
position = event.pos()
self.source_last = self.indexAt(position).row()
self.source_last_index = self.indexAt(position)
self.model().moveRow(self.source_first_index, self.source_first, self.source_last_index, self.source_last)