Uso de QListView con un modelo definido en Pyside
Pregunta
He estado tratando de mostrar una lista que construyo usando Pyside. No es simplemente una lista de cadenas (o podría usar QListWidget
), pero lo simplifiqué para el ejemplo.
from PySide import QtCore, QtGui
class SimpleList(QtCore.QAbstractListModel):
def __init__(self, contents):
super(SimpleList, self).__init__()
self.contents = contents
def rowCount(self, parent):
return len(self.contents)
def data(self, index, role):
return str(self.contents[index.row()])
app = QtGui.QApplication([])
contents = SimpleList(["A", "B", "C"]) # In real code, these are complex objects
simplelist = QtGui.QListView(None)
simplelist.setGeometry(QtCore.QRect(0, 10, 791, 391))
simplelist.setModel(contents)
simplelist.show()
app.exec_()
ya veo nada, solo una lista vacía.
¿Qué estoy haciendo mal?
Solución
Deberías comprobar role
argumento:
def data(self, index, role):
if role == QtCore.Qt.DisplayRole:
return str(self.contents[index.row()])
Pero es extraño QTableView
funciona con cualquier role
.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow