2010-02-25 4 views
1

Я пытаюсь наследовать QSqlTableModel, чтобы сделать данные im мой дисплей таблицы так, как мне нужно.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

+1

Спасибо, но если этот ответ помог, как насчет его принятия? Это тактический этикет (используйте значок в виде галочки под номером слева от ответа, который вы хотите принять). –

+1

возможно супер (TableViewModel, self) .data (modelIndex, role) лучше;) – Grissiom

Смежные вопросы