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

Haw*_*n21 7 python pyqt qtreeview qstandarditemmodel qstandarditem

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

任何帮助将非常感激.

thr*_*les 14

您可以在创建时将这些项设置为不可编辑 QSandardItem

item = QStandardItem('my_item_text')
item.setEditable(False)
Run Code Online (Sandbox Code Playgroud)

您可以通过调用禁用整个树视图的编辑

my_treeview.setEditTriggers(QAbstractItemView.NoEditTriggers)
Run Code Online (Sandbox Code Playgroud)

默认情况下,树形视图应允许您选择项目,但如果你想改变默认的行为,你会想看看setSelectionMode()setSelectionBehavior()树视图的方法(以及它们对于QAbstractItemViewQTreeView来自继承).这些方法的c ++文档可以在这里找到,我通常在PyQt文档中使用它,因为它通常更完整,并且翻译成Python代码并不太难.只需更换的所有实例::.)