如何在PySide中使用QTableWidget删除项目时阻止插入新行

问题描述 投票:1回答:1

相关帖子在这里

QTablewidget drop without creating new rows


但尚未得到证实。

它重复吗?但我敢问......

我正在制作QTableWidget

我想安装拖放事件。

但它有副作用。

执行此代码时

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:

我想只更改数据。我不想插入新的行或列。

你有什么主意吗?

python pyside
1个回答
0
投票

我不知道为什么会这样,但我能做到。

为此,

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

限制只有两个属性达到了我的目的。

© www.soinside.com 2019 - 2024. All rights reserved.