У меня есть графический интерфейс QTreeView на основе editabletreemode.py в примерах PyQt. Внутри модели я заново реализовал setData () для своих нужд: для какого-то внешнего значения я возвращаю False, в противном случае возвращается True
def setData(self, index, value, role=QtCore.Qt.EditRole):
if role != QtCore.Qt.EditRole:
return False
item = self.getItem(index)
result = item.setData(index.column(), value)
if result:
self.dataChanged.emit(index, index)
self.modified = True
print "setData() returning ", result
return result
Проблема в том, что даже когда setData возвращает False, GUI по-прежнему принимает измененное значение. Так что теперь у меня есть противоречивые данные между моделью и представлением. Для меня имеет смысл то, что когда setData () возвращает False для отклонения значения, представление должно возвращаться к старому значению. Возможно ли это?
[решено]
На самом деле возвращаемое значение setData () не имеет значения. Кажется, QTreeView вызывает data () для повторного получения значения в любом случае. Проблема, с которой я столкнулся, заключалась в том, что setData () изменила внутренние данные, хотя и вернула False.
Если бы кто-нибудь мог объяснить мне, для чего используется возвращаемое значение setData (), это было бы здорово.