0
カスタムListModelをPyQtで動作させて表示させようとしています。ただし、リストビューは常に空白になります。私はUserModel.usersが持っている必要がある項目を持っていることを確認し、dataChangedは正しく起動しますが、何も表示されません。 同時に、データのprint(index)は何も出力しないので、モデルデータは決して呼び出されませんか? 私は何が欠けていますか?あなたがbeginInsertRows
とendInsertRows
呼び出す必要があります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)を開くことができますか? –