2009-03-22 8 views
1

내가 다음 코드가 왜 정보 :QSortFilterProxyModel.mapToSource가 충돌합니다.

proxy_index = self.log_list.filter_proxy_model.createIndex(index, COL_REV) 
model_index = self.log_list.filter_proxy_model.mapToSource(proxy_index) 
revno = self.log_list.model.data(model_index,QtCore.Qt.DisplayRole) 
self.setEditText(revno.toString()) 

코드는 두 번째 줄에 충돌하지 않습니다. 예외는 없습니다. 추적이 없어. 경고가 없습니다. 이 문제를 어떻게 해결할 수 있습니까?

답변

1

프록시 모델의 createIndex() 메소드를 잘못 사용하고있을 수 있습니다. 일반적으로 createIndex() 메서드는 모델의 index() 메서드 구현의 일부로 호출됩니다.

프록시 모델의 index() 메서드를 호출하여 프록시 인덱스를 가져 와서 소스에 매핑 해 보았습니까?

아마도 코드를 컨텍스트에 표시하거나 수행하려고 시도한 것을 설명 할 수 있습니다.

0

동일한 문제가 발생했지만 다행히 David이 권장하는대로 createIndex() 대신 index() 메서드를 사용합니다. 일반적으로 QModelIndex의 내부 포인터를 index() 메서드 외부에서 처리하는 것은 좋지 않습니다. 심지어 자신의 모델을 사용하여 내부 포인터를 엉망으로 만들 때도 Qts View 코드는 사용자에게 매우 모호하기 때문에 예상치 못한 버그가 발생할 수 있습니다.