QTreeView 限制特定的深度、特定深度下的列 是否可以编辑
#
# C_TreeView
# 在QTreeView基础上增加限制特定深度、特定列是否可以编辑
#
class C_TreeView(QTreeView):
def __init__(self, parent=None):
QTreeView.__init__(self, parent)
# 设置可以编辑的 深度 和 列
# dict, depth:int,column:list
self.c_allow_edit = dict()
#
# 设置可以编辑的 深度 和 列
# allow_edit :dict,
# key:深度, 大于0的整数
# value :每个深度下可以编辑的多个列, 列编号从0开始
def c_setAllowEdit(self, allow_edit):
self.c_allow_edit = allow_edit
def edit(self, index, trigger, event):
args = [index, trigger, event]
path = self.indexToPath(index)
depth = len(path)
columnIndex = index.column()
#return_value = QTableView.edit(self, *args)
#return_value =super(QTreeView, self) .edit( *args)
if event is not None:
# 2:鼠标的按下,3:鼠标的释放
# 4:鼠标的双击
# 如果是双击,判断 深度 和 列 是否可以编辑
event_type = event.type()
if event_type ==4:
allow_columns = self.c_allow_edit.get(depth)
if allow_columns is None:
return False
if columnIndex not in allow_columns:
return False
return_value =super(QTreeView, self) .edit( *args)
return return_value