Frage

Ich habe versucht, eine Liste anzuzeigen, die ich mit Pyside erstelle. Es ist nicht nur eine Liste von Strings (oder ich könnte verwenden QListWidget), aber ich habe es für das Beispiel vereinfacht.

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_()

Aha nichts, nur eine leere Liste.

Was mache ich falsch?

War es hilfreich?

Lösung

Sie sollten überprüfen role Streit:

def data(self, index, role):
    if role == QtCore.Qt.DisplayRole:
        return str(self.contents[index.row()])

Aber es ist seltsam, QTableView funktioniert mit jedem role.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top