选择了 TreeView 中的哪个节点(PySide)?

Which node from TreeView is selected (PySide)?

我有一个带有 QTreeView 的程序,我想 disable/enable 根据选择的节点在工具栏中执行一些操作,但我不知道如何获取选定的节点。有人可以帮忙吗?

在下面的示例中,我展示了如何知道在 QTreeView 中选择了哪些项目,为此我们使用 selectionChanged 信号,returns 选中和取消选择的项目,然后迭代并获得 QModelIndex,并通过这和我们获取数据的模型。

from PySide.QtGui import *
from PySide.QtCore import *

class Main(QTreeView):
    def __init__(self):
        QTreeView.__init__(self)
        model = QFileSystemModel()
        model.setRootPath(QDir.homePath())
        self.setModel(model)
        m = self.selectionModel()
        m.selectionChanged.connect(self.onSelectionChanged)

    def onSelectionChanged(self, selected, deselected):
        for index in selected.indexes():
            print(self.model().data(index))


if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    w = Main()
    w.show()
    sys.exit(app.exec_())