Verwenden von QlistView mit einem in pyside definierten Modell
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?
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