在 PySide 中使用 QTableWidget 删除项目时如何防止插入新行
How to prevent from inserting new row when item is dropped with QTableWidget in PySide
此处相关post
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()
这是显示的小部件。
问题是当我将任意项目拖到其他项目时,如果我拖放到项目的交叉点,则会插入新行。
我想更改数据only.I不想插入新行或新列。
你有什么想法吗?
我不知道为什么会这样,但我可以做到。
为了做到这一点,
self.setAcceptDrops(True)
self.setDragEnabled(True)
限制仅有的两个属性就达到了我的目的。
此处相关post
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()
这是显示的小部件。
问题是当我将任意项目拖到其他项目时,如果我拖放到项目的交叉点,则会插入新行。
我想更改数据only.I不想插入新行或新列。
你有什么想法吗?
我不知道为什么会这样,但我可以做到。
为了做到这一点,
self.setAcceptDrops(True)
self.setDragEnabled(True)
限制仅有的两个属性就达到了我的目的。