【发布时间】:2011-08-12 23:55:41
【问题描述】:
我在 QTreeView 中有许多项目。每个项目都是使用这个类生成的:
class Branch(QStandardItem):
def __init__(self, label, uri = None):
QStandardItem.__init__(self, label)
self.uri = uri
这是我的实际树:
class FileTree(QTreeView):
def __init__(self):
QTreeView.__init__(self)
def keyPressEvent(self, event):
if event.key() == Qt.Key_Space or event.key() == Qt.Key_Return:
crawler = self.selectedIndexes()[0].model().item(self.selectedIndexes()[0].row())
print(crawler.uri)
QTreeView.keyPressEvent(self, event)
如您所见,我有点不确定如何从所选项目中获取 uri 变量。我发现 selectedIndexes() 返回一个模型而不是项目本身。我不知道如何从一个到另一个。尝试使用self.selectedIndexes()[0].row() 获取项目编号有点摸不着头脑,但它似乎忽略了树中的各种分支(例如,它会给我一个0 用于分支中的第一行,但不会告诉我它在哪个分支)。
从 QTreeView 获取所选项目的正确方法是什么?或者有没有更好的方法来检测空格键或返回键被击中,这会使这更容易? Qt 的 Python 文档严重缺乏,所以真的很难知道我是否曾经以一种有意义的方式做事。
【问题讨论】: