2010-02-25 6 views
1

QSqlTableModel을 상속하여 데이터를 원하는 방식으로 내 테이블에 표시하려고합니다.QSqlTableModel, 데이터 함수 오버로드

class TableViewModel(QSqlTableModel): 

    def __init__(self): 
     super(TableViewModel, self).__init__() 


    def flags(self, modelIndex): 
     if not modelIndex.isValid(): 
      return 
     if modelIndex.column() != 1 and modelIndex.column() != 4: 
      return Qt.ItemIsEnabled | Qt.ItemIsSelectable 
     return Qt.ItemIsEditable | Qt.ItemIsEnabled | Qt.ItemIsSelectable 

    def data(self, modelIndex, role=Qt.DisplayRole): 
     if not modelIndex.isValid(): 
      return QVariant() 

     if role != Qt.DisplayRole & role != Qt.EditRole: 
      return QVariant() 

     return record.value(modelIndex.column()) 

이 코드에서는 빈 셀만 가져옵니다. data() 함수가 없으면이 코드는 완벽하게 작동합니다. TableView에 표시된 데이터는 정확히 있어야합니다.

QSqlTableModel에서 데이터를 가져 오는 것만으로도 충분합니다. 어디에서 찾을 수 있습니까? 아니면 그냥 내 잘못이라고?

미리 감사드립니다.

답변

2

record.value (그 변수가 어디에 살든지, 언제 또는 어떻게 설정되었는지에 대한 귀하의 코드에는 표시되지 않습니다.) 확실하지 않습니다. 어쨌든 "QSqlTableModel에서 데이터 가져 오기"(서브 클래 싱하는 기본 클래스를 의미한다고 가정 함)를 사용하여

whatever = QSqlTableModel.data(self, modelIndex, role) 
+0

덕분에 도움이되었습니다. 내 자신에 의해 그것을하려고했지만, 어딘가 착각하고 그 결과로 - 재귀 – serge

+1

고마워,하지만이 대답이 도운다면, 그것을 받아들이는 게 어때? 그것은 SO 에티켓입니다 (수락하고 싶은 대답의 왼쪽에있는 체크 표시가있는 모양의 아이콘을 사용하십시오). –

+1

어쩌면 super (TableViewModel, self) .data (modelIndex, role)가 더 좋습니다. – Grissiom