Как запретить вставку новой строки при отбрасывании элемента с помощью QTableWidget в PySide - PullRequest
0 голосов
/ 14 февраля 2019

связанный пост здесь

Удаление QTablewidget без создания новых строк


, но это еще не подтверждено.

Это дубликат? но я смею спросить ...

Я делаю QTableWidget

Я хочу установить Drag & Drop Event.

Но у него есть побочный эффект.

Когда этот код выполняется,

from PySide import QtGui
from PySide import QtCore
import sys

class CustomTableWidget(QtGui.QTableWidget):
    def __init__(self,row=0,column=0,parent=None):
        super(CustomTableWidget,self).__init__(parent=None)
        self.setRowCount(row)
        self.setColumnCount(column)      
        self.selection_start = False    
        self.setAcceptDrops(True)
        self.setDragEnabled(True)
        self.setDragDropMode(QtGui.QAbstractItemView.DragDrop)
        self.setDragDropOverwriteMode(False)
        self.setDropIndicatorShown(True)

def main():
    try:
        QtGui.QApplication([])
    except Exception as e:

        print(e)
    table = CustomTableWidget(10,10)
    for i in range(10):
        for k in range(10):
            item = QtGui.QTableWidgetItem()
            item.setText("{0},{1}".format(i,k))
            table.setItem(i,k,item)
    table.show()
    sys.exit(QtGui.QApplication.exec_())
if __name__ == "__main__":
    main()

Это показанный виджет. enter image description here

Проблемакогда я перетаскиваю произвольный элемент в другой элемент, если я перетаскиваю на пересечении элементов, вставляется новая строка.

After inserted:

Я хочу изменить только данные. Я не хочу вставлять новую строку или столбец.

У вас есть идеи?

1 Ответ

0 голосов
/ 15 февраля 2019

Я не знаю, почему это так, но я мог бы это сделать.

Для этого

self.setAcceptDrops(True)
self.setDragEnabled(True)

Ограничение только двумя атрибутами достигает моей цели.

...