如何在Qt中实现指定列可编辑的部分可编辑树模型
Qt可编辑树视图指定列可编辑实现方案
核心修改逻辑
你只需要修改TreeModel类的flags方法,通过index.column()获取当前单元格的列索引,按列动态控制是否添加Qt.ItemIsEditable标志即可。
完整修改后代码
def flags(self, index): if not index.isValid(): return 0 base_flags = super(TreeModel, self).flags(index) # 第一列(索引0,对应Title列)不添加可编辑标志,默认支持选中 if index.column() == 0: return base_flags # 第二列(索引1,对应Description列)添加可编辑标志 elif index.column() == 1: return base_flags | Qt.ItemIsEditable # 更多列可在此扩展规则 return base_flags
实现说明
- 父类返回的
base_flags默认已经包含Qt.ItemIsEnabled(条目可用)、Qt.ItemIsSelectable(条目可选中)属性,因此第一列无需额外加标志,就能满足「仅可选中、不可编辑」的需求 - 仅给第二列额外拼接
Qt.ItemIsEditable标志,即可实现第二列可编辑的效果
效果示意图

内容的提问来源于stack exchange,提问作者João Ramiro
相关产品推荐
相关产品推荐

