setData引出退出代码-1073741819

时间:2014-05-04 00:12:57

标签: python pyside exit-code qstandarditemmodel

我有一个QtGui.QStandardItemModel的子类,其setData如下:

def setData(self, index, value, role):
    if role == QtCore.Qt.EditRole:
        old = self.itemFromIndex(index).text()
        new = value
        MAIN.changeItem(old,new,index)
    return QtGui.QStandardItemModel.setData(self, index, value, role)

在MAIN.changeItem中,我选择了' old'价值并将其替换为' new'在数据库中,然后我用返回值setData。最后我刷新模型以显示结果。像这样:

def changeItem(self,old,new,index):

    dosomethin(old,newindex) # adjust the database and model

    self.tableUpdate() # refresh/redraw the table

但是我要退出-1073741819,但前提是我一个接一个地做。如果我不刷新模型(注释掉self.tableUpdate()),而是执行其他可以正常刷新它的东西(比如添加新项目或更改标签),它不会提高错误。知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

哦想通了。

我认为这个过程会像:

model.itemChanged.signal -> databaseUpdate() -> setItem() -> tableUpdate()

但它正在做:

model.itemChanged.signal -> databaseUpdate() -> tableUpdate() -> setItem()

由于setItem正在寻找一个不再存在的索引项(因为它已经更新),它崩溃了。

通过将setData返回更改为' True'或其他任何内容来修复此问题。