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?

¿Fue útil?

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
scroll top