PyQt 예제에서 editabletreemode.py를 기반으로하는 QTreeView GUI가 있습니다. 모델 내부, 나는 내 필요에 대한 사항 setData()를 다시 구현 : 일부는 내가 false를 반환하고있어 아웃 오브 바운드 값, 그렇지 않으면qtreeview 데이터 불일치
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가 반환하는 경우에도입니다 True를 반환을위한 거짓, GUI는 여전히 변경된 값을 승인합니다. 그래서 모델과 뷰 사이에 일관성없는 데이터가 있습니다. 나에게 맞는 것은 setData()가 값을 거부하기 위해 False를 반환하면 뷰가 이전 값으로 되돌아 가야한다는 것입니다. 이것이 가능한가?
[SOLVED] 실제로 setData()의 반환 값은 중요하지 않습니다. QTreeView는 이후에 값을 다시 검색하기 위해 data()를 호출하는 것처럼 보입니다. 내가 가지고있는 문제는 setData()가 False를 반환했지만 내부 데이터를 변경했기 때문입니다.
누군가 내게 설명 할 수 있다면 setData()의 반환 값이 무엇인지 설명 할 수 있다면 좋을 것입니다.
'val'이란 무엇입니까? '가치'가되어서는 안 될까요? – yak
@ lang2 : 귀하의 솔루션에 따라 답변을 편집했습니다. 불편을 끼쳐 드려 죄송합니다. Qt가 뷰 내부에서 편집 할 때 뷰와 모델을 함께 연결하는 방식을 실제로 오해했습니다. 답장을 보내 주셔서 감사합니다. – lunaryorn