Tengo una cantidad de artículos en un QTreeView. Cada elemento se genera utilizando esta clase:Obteniendo el elemento seleccionado actualmente en QTreeView
class Branch(QStandardItem):
def __init__(self, label, uri = None):
QStandardItem.__init__(self, label)
self.uri = uri
Ésta es mi árbol real:
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)
Como se puede ver, estoy un poco inseguro en cuanto a cómo conseguir la variable URI del seleccionado ít. Encontré que selectedIndexes()
devuelve un modelo y no el artículo en sí. No estoy seguro de cómo pasar de uno a otro. Tratar de obtener el número de artículo usando self.selectedIndexes()[0].row()
fue un poco difícil en la oscuridad, pero parece ignorar las diversas ramas en el árbol (por ejemplo, me dará un 0
para la primera fila en una rama, pero ganó ' t dime nada sobre en qué rama se encuentra).
¿Cuál es la forma correcta de obtener el elemento seleccionado de QTreeView? ¿O hay una forma mejor de detectar la barra espaciadora o devolver las teclas que podrían facilitar esto? Hay una falta grave de documentación de Python para Qt, por lo que es realmente difícil saber si alguna vez hago las cosas de manera sensible.
impresionante - eso es exactamente lo que estaba buscando. Esto es lo primero que he hecho en Qt. Gracias por tomarse el tiempo para explicarlo. – ashground