如何在Qt中制作部分可编辑的树模型
How to make a partially editable tree model in Qt
我想更改qt提供的可编辑树视图示例,使第一列不可编辑,而下一列可编辑。
这是回购协议:
https://github.com/pyqt/examples/tree/master/itemviews/editabletreemodel
我知道这与旗帜有关。在 editabletreemodel.py
他们有 class TreeModel
.
def flags(self, index):
if not index.isValid():
return 0
return Qt.ItemIsEditable | super(TreeModel, self).flags(index)
我可以将 Qt.ItemIsEditable 更改为 Qt.ItemIsSelectable,这将使所有字段都不可编辑。但这不是我想要的
基本上我想让 Title
列可选择并且 Description
列可编辑,我怎样才能得到这种行为?
只需检查 flags()
实现中的索引列,然后使用独占二元运算符删除 ItemIsEditable
标志:
def flags(self, index):
flags = super(TreeModel, self).flags(index)
if index.column() == 0:
flags &= ~Qt.ItemIsEditable
return flags
这是假设您使用的是始终提供可编辑项目的超级 class,否则只需添加标志(默认 QAbstractItemModel returns 仅可选择和启用的项目):
def flags(self, index):
flags = super(TreeModel, self).flags(index)
if index.column() > 0:
flags |= Qt.ItemIsEditable
return flags
我想更改qt提供的可编辑树视图示例,使第一列不可编辑,而下一列可编辑。
这是回购协议: https://github.com/pyqt/examples/tree/master/itemviews/editabletreemodel
我知道这与旗帜有关。在 editabletreemodel.py
他们有 class TreeModel
.
def flags(self, index):
if not index.isValid():
return 0
return Qt.ItemIsEditable | super(TreeModel, self).flags(index)
我可以将 Qt.ItemIsEditable 更改为 Qt.ItemIsSelectable,这将使所有字段都不可编辑。但这不是我想要的
基本上我想让 Title
列可选择并且 Description
列可编辑,我怎样才能得到这种行为?
只需检查 flags()
实现中的索引列,然后使用独占二元运算符删除 ItemIsEditable
标志:
def flags(self, index):
flags = super(TreeModel, self).flags(index)
if index.column() == 0:
flags &= ~Qt.ItemIsEditable
return flags
这是假设您使用的是始终提供可编辑项目的超级 class,否则只需添加标志(默认 QAbstractItemModel returns 仅可选择和启用的项目):
def flags(self, index):
flags = super(TreeModel, self).flags(index)
if index.column() > 0:
flags |= Qt.ItemIsEditable
return flags