您的位置:首页 > 编程语言 > Qt开发

QTreeView 限制特定的深度、特定深度下的列 是否可以编辑

2015-11-17 15:55 513 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: