编程语言
首页 > 编程语言> > python – 将QListView与Pyside中定义的模型一起使用

python – 将QListView与Pyside中定义的模型一起使用

作者:互联网

我一直在尝试显示我使用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_()

我看到nothing,只是一个空列表.

我究竟做错了什么?

解决方法:

你应该检查角色参数:

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

但奇怪的是,QTableView适用于任何角色.

标签:python,qt,pyside,qlistview
来源: https://codeday.me/bug/20190630/1335023.html