ich bin rel. neu zu Python und Qt4 (mein erstes Project damit ist 3 Wochen her). Ich habe ein vollgendes Problem.
Aus einer anderen Bibliothek bekomme ich eine map/list von Werten, die ich in einem QTableView darstellen will. Diese externe Bibliothek verwendet die map/list und liefert mir (nach neuen Berechnungen) eine veraederte map/list.
Nun muss ich das ganze in einem QTableView darstellen. Dazu habe ich mir die vollgende Klasse geschrieben:
Code: Alles auswählen
class FractionModel(QtCore.QAbstractTableModel):
def __init__(self):
QtCore.QAbstractTableModel.__init__(self)
self._log = logging.getLogger(_LOGGER_NAME)
self._fraction = Gscalc.Fraction()
def getFraction(self):
return self._fraction
def rowCount(self, parent=QtCore.QModelIndex()):
return len(self._fraction)
def columnCount(self, parent=QtCore.QModelIndex()):
return self.COLUMN_COUNT
def data(self, index, role=QtCore.Qt.DisplayRole):
if role != QtCore.Qt.DisplayRole:
return QtCore.QVariant()
if index.column() == self.COLUMN_LEVEL:
return QtCore.QVariant(index.row())
elif index.column() == self.COLUMN_MIN:
return QtCore.QVariant(self._fraction[index.row()].min)
elif index.column() == self.COLUMN_MAX:
return QtCore.QVariant(self._fraction[index.row()].max)
else:
return QtCore.QVariant()
def headerData(self, section, orientation, role=QtCore.Qt.DisplayRole):
if role != QtCore.Qt.DisplayRole:
return QtCore.QVariant()
if orientation == QtCore.Qt.Horizontal:
return QtCore.QVariant(self.COLUMNS_NAMES[section])
if orientation == QtCore.Qt.Vertical:
return QtCore.QVariant()
def flags(self, index):
return self.COLUMN_FLAGS[index.column()]
def setData(self, index, value, role=QtCore.Qt.EditRole):
if role != QtCore.Qt.EditRole:
return False
if not value.canConvert(QtCore.QVariant.Double):
return False
v = value.toPyObject()
row = index.row()
column = index.column()
if column == self.COLUMN_MIN:
self._fraction[row].min = float(v)
self._fraction[row].vmin = float(v)
elif column == self.COLUMN_MAX:
self._fraction[row].max = float(v)
self._fraction[row].vmax = float(v)
self._log.debug(
'set new value for denominator #{0:d}: {1!s}'
.format(row, self._fraction[row]))
return True
Code: Alles auswählen
def updateFractionTable(self):
n1 = self.index(0, 0, QtCore.QModelIndex())
n2 = self.index(self.rowCount(), self.columnCount(), QtCore.QModelIndex())
self.emit(QtCore.SIGNAL('dataChanged'), n1, n2)
Code: Alles auswählen
table.emit(QtCore.SIGNAL('update'))
Danke, devent.