0
我想獲得一個自定義的ListModel工作,並顯示在PyQt。但是列表視圖總是空白。我檢查了UserModel.users確實有它應該有的項目,並且dataChanged正確啓動,但沒有任何顯示。 同時,數據中的print(index)不會輸出任何東西,所以模型數據永遠不會被調用? 我錯過了什麼?QListView拒絕顯示子類QAbstractListModel
self.userList = QtWidgets.QListView()
self.userList.setModel(self.main.commandHandler.userList)
self.userList.show()
class UserModel(QAbstractListModel):
def __init__(self, parent=None):
QAbstractListModel.__init__(self, parent)
self.users = []
def rowCount(self, parent = None) :
if parent != None:
return 0
return len(self.users)
def flags(self):
return Qt.NoItemFlags
def data(self, index, role = Qt.DisplayRole):
print(index)
name = self.users[index].name
if index.isValid():
if (role == Qt.DisplayRole):
return QVariant(name)
else:
return QVariant()
def addUser(self, payload):
user = User(payload)
l = len(self.users)
self.users.append(user)
self.dataChanged.emit(self.index(l, 0), self.index(l, 0))
我試着添加beginInsertRows和endInsertRows,它不會改變任何東西。至於嘗試pytestqt,測試人員似乎也有一些問題。它在hasIndex中返回一個錯誤,我不會覆蓋它,也不應該這樣做。 – user1787062
你能用模型和你得到的確切錯誤打開[問題](https://github.com/pytest-dev/pytest-qt/issues)嗎? –