setData вызывает код выхода -1073741819

У меня есть подкласс 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 я беру «старое» значение и заменяю его «новым» в базе данных, а затем устанавливаю Data с возвращаемым значением. И, наконец, я обновляю модель, чтобы показать результат. Вот так:

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

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

    self.tableUpdate() # refresh/redraw the table

Но я получаю exit -1073741819, но только если я делаю их один за другим. Если я не обновляю модель (комментируя self.tableUpdate()), а вместо этого делаю что-то еще, что обычно обновляет ее (например, добавляя новый элемент или меняя вкладки), это не вызывает ошибку. Любая идея, почему это происходит?


person f.rodrigues    schedule 04.05.2014    source источник
comment
MAIN как-то связан с Qt?   -  person dilbert    schedule 04.05.2014
comment
Да, это экземпляр всего класса приложения.   -  person f.rodrigues    schedule 04.05.2014
comment
Код ошибки вызывается Qt или базой данных?   -  person dilbert    schedule 04.05.2014


Ответы (1)


О разобрался.

Я думал, что процесс будет выглядеть так:

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

Но вместо этого он делал:

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

И поскольку setItem искал элемент индекса, которого больше не было (потому что он был обновлен), он разбился.

Исправил это, изменив возврат setData на «True» или что-то еще.

person f.rodrigues    schedule 04.05.2014