2010-02-25 36 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應該是(沒有跡象顯示在你的地方時,它的設置record變量生活或如何或代碼)。無論如何,對於「從QSqlTableModel獲取數據」(我假定你的意思是你的子類的基類),使用

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

謝謝,它有幫助。我試圖用我自己的方式來做,但是在某個地方被誤認爲是結果 - 遞歸 – serge 2010-02-26 12:19:32

+1

謝謝你很好,但是如果這個答案有幫助,接受它怎麼樣?這就是禮節(使用你想接受的答案左邊數字下方的複選標記形狀圖標)。 – 2010-02-26 15:12:29

+1

也許超級(TableViewModel,self).data(modelIndex,role)更好;) – Grissiom 2011-08-05 13:59:50