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
32 lines
1.2 KiB
Python
2 years ago
|
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)
|