我在SelectedClicked中仅启用了QTreeView修改触发器,但项目编辑(通过edit方法)仍然因其他原因而被触发(例如CurrentChanged
)。为什么其他触发器有效?
有关示例,请参阅下面的程序,单击树项时,您会看到编辑因以下几种原因而被触发:
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
class TreeView(QTreeView):
def __init__(self):
super().__init__()
self.setEditTriggers(self.SelectedClicked)
self.__model = QStandardItemModel()
self.__model.appendRow([QStandardItem('Item 1')])
self.__model.appendRow([QStandardItem('Item 2')])
self.setModel(self.__model)
def edit(self, index, trigger, event):
print('Edit index {},{}, trigger: {}'.format(index.row(), index.column(), trigger))
return False
app = QApplication([])
w = TreeView()
w.show()
app.exec_()
答案 0 :(得分:2)
编辑。但是,根据您指定的触发器,创建或不创建编辑器的编辑槽作业,以及返回true或false(请参阅Qt Documentation)。在您的代码中,编辑不执行任何操作(并且由于未创建编辑器,因此不会编辑该项目)。尝试拨打super().edit(self, index, trigger, event)
。
def edit(self, index, trigger, event):
res = super().edit(index, trigger, event)
print('Edit {},{}, trigger: {}, accepted: {}'.format(index.row(), index.column(), trigger, res))
return res