PyQT - 你如何使QTreeview无法编辑但也可以选择?

时间:2014-04-26 00:59:14

标签: python pyqt qtreeview qstandarditemmodel qstandarditem

我刚刚从wxPython切换到PyQT,我在QTreeview上遇到了一些麻烦。我有一个QTreeview,它将显示分类为可扩展的部分的数据,但是这个TreeView中的数据不应该是可编辑的,但我需要能够让用户选择数据(双击将执行另一个方法)。我不确定如何使它只读,但也可以选择。我使用QStandardItemModel和QStandardItem来保存数据。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:11)

您可以在创建QSandardItem

时执行此操作,将单个项目设置为不可编辑
item = QStandardItem('my_item_text')
item.setEditable(False)

您可以通过调用

禁用整个树视图的编辑
my_treeview.setEditTriggers(QAbstractItemView.NoEditTriggers)

默认情况下,树视图应该允许您选择项目,但是如果您想要更改默认行为,您将需要查看树视图的setSelectionMode()setSelectionBehavior()方法(它们适用于QAbstractItemView继承的QTreeView。这些方法的c ++文档可以找到here,我通常会在PyQt文档中使用它,因为它通常更完整,并且转换成Python代码并不困难。只需将::的所有实例替换为.

即可