En utilisant QListView avec un modèle défini dans pyside
Question
J'ai essayé d'afficher une liste que je construis à l'aide PySide. Il ne suffit pas d'une liste de chaînes (ou je pourrais utiliser QListWidget
), mais je l'ai simplifié pour l'exemple.
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_()
Je ne vois rien
Qu'est-ce que je fais mal?
La solution
Vous devriez vérifier argument role
:
def data(self, index, role):
if role == QtCore.Qt.DisplayRole:
return str(self.contents[index.row()])
Mais il est étrange, QTableView
fonctionne avec tout role
.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow