为啥我得到一个 TypeError: PySide2.QtCore.QStringListModel.setData(): no enough arguments

Posted

技术标签:

【中文标题】为啥我得到一个 TypeError: PySide2.QtCore.QStringListModel.setData(): no enough arguments【英文标题】:Why I get a TypeError: PySide2.QtCore.QStringListModel.setData(): not enough arguments为什么我得到一个 TypeError: PySide2.QtCore.QStringListModel.setData(): no enough arguments 【发布时间】:2020-06-25 07:00:11 【问题描述】:

我尝试像这样在 PySide2 中的 QStringListModel 中添加新字符串

self.model = QStringListModel()
n = self.model.rowCount()
self.model.insertRow(n)
i = self.model.index(n,0)
self.model.setData(index= i,value='Hello World!!',role=Qt.EditRole)

在 insertRow() 之前运行正常, 但我得到一个 TypeError: PySide2.QtCore.QStringListModel.setData(): 没有足够的参数 在最后一行。 因为我填写了这个函数中的所有参数。 这个错误是如何发生的以及如何解决它? 请帮帮我。

【问题讨论】:

【参考方案1】:

QStringListModel::setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole)

重新实现:QAbstractItemModel::setData(const QModelIndex &index, const QVariant &value, int role)。

将模型中具有给定索引的项目中指定角色的数据设置为提供的值。

如果项目发生更改,则会发出 dataChanged() 信号。发出 dataChanged() 信号后返回 true。

改变

self.model.setData(index= i,value='Hello World!!',role=Qt.EditRole)

self.model.setData(i, 'Hello World!!', role=Qt.EditRole)

【讨论】:

以上是关于为啥我得到一个 TypeError: PySide2.QtCore.QStringListModel.setData(): no enough arguments的主要内容,如果未能解决你的问题,请参考以下文章

为啥我得到 TypeError('Router.use()

为啥我得到:TypeError:channel.updateOverwrite 不是函数

为啥我得到 Typeerror 超级表达式必须为 null 或函数?

我明白为啥我得到: TypeError: getsockaddrarg: AF_INET address must be tuple, not str

pycharm 使用 pyside2 TypeError:'NoneType' 对象不可调用

为啥使用默认的 React Google Maps 得到“TypeError:无法将类调用为函数”?