Есть таблица со списком списков items. Данные в нем хранятся как в двумерном массиве. Переопределил метод data, но в таблице все равно пусто. По крайней мере, вьювер ни чего не рисует. Прочитал про сигнал dataChanged, отправляю его, все равно ни чего нет. Часть кода:
class Model(QAbstractTableModel):
def __init__(self, parent):
QAbstractTableModel.__init__(self, parent)
self.items = []
self.clientId = None
def setClientId(self, cid):
self.clientId = cid
self.loadItems()
def loadItems(self):
db = QtGui.qApp.db
table = db.table('table')
where = 'table.`client_id` = ' + str(self.clientId)
stmt = db.selectStmt(table)
query = db.query(stmt)
while query.next():
record = query.record()
v_year = forceString((record.value('1')))
v_ovra = forceString((record.value('2')))
v_ovrb = forceString((record.value('3')))
v_chlb = forceString((record.value('4')))
v_chlc = forceString((record.value('5')))
v_espr = forceString((record.value('6')))
self.items.append([v_year, v_ovra, v_ovrb, v_chlb, v_chlc, v_espr]);
self.update()
def data(self, index, role=Qt.DisplayRole):
column = index.column()
row = index.row()
if role == Qt.DisplayRole:
item = self.items[row]
return toVariant(item[column])
return QVariant()
def update(self):
index1 = self.index(0, 0)
index2 = self.index(self.columnCount(), self.rowCount())
self.dataChanged.emit(index1, index2)
def setData(self, index, value, role=QtCore.Qt.EditRole):
if role == QtCore.Qt.EditRole:
self.items[index.row()][index.column] = value
self.update()
return True
return False
def columnCount(self):
return 6
def rowCount(self):
return len(self.items)
def headerData(self, section, orientation, role = Qt.DisplayRole):
if role == Qt.DisplayRole:
return QVariant(self.column[section])
return QVariant()