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