如何对QtTreeView上的键盘选择做出反应?

e-s*_*tis 3 python pyqt signals-slots qtreeview pyside

QTreeViewclicked信号,但不itemChanged喜欢QTreeWidget.我必须使用,QTreeView因为它是"基于模型".但是,如果我的用户选择了一个带有keyborad的行,clicked则不会被发送,并且永远不会调用我的回调.我应该注册什么信号?

ekh*_*oro 5

QTreeView类继承QAbstractItemView,它提供了访问的选择模型.

选择模型有几个信号,用于记录对当前项目所做的更改以及鼠标和键盘的选择.

编辑:

需要明确的是,信号需要像这样连接:

selmodel = self.listing.selectionModel()
selmodel.selectionChanged.connect(self.handleSelectionChanged)
Run Code Online (Sandbox Code Playgroud)

并且处理程序的签名应如下所示:

def handleSelectionChanged(self, selected, deselected):
    indexes = selected.indexes()
    if indexes:
        print('row: %d' % indexes[0].row())
Run Code Online (Sandbox Code Playgroud)

selecteddeselected被实例QItemSelection.