我开始使用QTreeView窗口小部件来表示我的数据库实体。我想对树视图中新实体选择的事件做出反应,因此我可以更新其他小部件的状态,使其与树视图的当前选择相对应。 文档显示了两个选项。 http://doc.qt.io/qt-5/qabstractitemview.html#selectionChanged和http://doc.qt.io/qt-5/qabstractitemview.html#currentChanged ,但我无法将传统
连接到他们self.treeView_shot.selectionChanged.connect(self.update_RenderView)
通过使用基于窗口小部件的方法,我知道的方法。我猜想它不起作用,因为selection / currentChanged不是信号,而是文档中称为[virtual protected slot]
的东西。您如何将选择更改连接到我的update_RenderView方法并将所选项目传递给它?
答案 0 :(得分:2)
您要检索视图的selectionModel
,然后连接到其 selectionChanged
信号。这样的事情应该起作用:
self.treeView_shot.selectionModel().selectionChanged.connect(self.YOURSLOT)
您的广告位将收到两个QItemSelection
参数:
def YOURSLOT (selected, deselected):
selected
是QModelIndex
es的集合;这些是活动期间选定的项目。deselected
是QModelIndex
es的集合;这些是活动期间取消选择的项目。或者,您始终可以查询QTreeView的selectedIndexes
属性,以获取所有当前选中的项目的列表。