Использование QListView с моделью, определенной в Pyside - PullRequest
4 голосов
/ 17 февраля 2012

Я пытался отобразить список, который я строю, используя PySide.Это не просто список строк (или я мог бы использовать QListWidget), но я упростил его для примера.

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

Я вижу ничего , просто пустой список.

Что я делаю не так?

1 Ответ

3 голосов
/ 17 февраля 2012

Вы должны проверить role аргумент:

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

Но это странно, QTableView работает с любым role.

...