http://qtforum.de/forum/viewtopic.php?t ... highlight=
in diesem thread hat mir upsala den entscheidenden Tipp gegeben, wie ich in eine QTableModel/QTableView-Darstellung eine Leerzeile einfügen kann.
Das funktioniert auch ganz prima. Bevor ich zum eigentlichen Problem komme, muss ich kurz den Aufbau des Model/View erklären (alles rückgebaut auf ein minimales Beispiel).
Ich habe ein TableModel, abgeleitet von QSqlQueryModel. Die data()-Methode ist nicht überschrieben. Vor dem TableView gibt es noch ein ProxyModel, abgeleitet wie in obigem link beschrieben von QAbstractTableModel. Die data()-Methode des ProxyModels sieht so aus:
Code: Alles auswählen
QVariant WeightsGroupingProxyModel::data(const QModelIndex &index, int role) const
{
if(sourceModel && index.isValid())
{
if(index.row() == 3)
{
QVariant original = sourceModel->data(sourceModel->index(index.row(), index.column()), role);
QVariant neu = 1234;
QVariant neu2 = (qlonglong)5678;
qDebug() << original << neu << neu2;
//return original; //alles in Ordnung
//return neu; //falsche Darstellung mit Checkbox
return neu2; //falsche Darstellung mit Checkbox
}
else if(index.row() >= 3)
return sourceModel->data(sourceModel->index(index.row() - 1, index.column()), role);
else
return sourceModel->data(sourceModel->index(index.row(), index.column()), role);
}
return QVariant();
}.QVariant(qlonglong, 4554) QVariant(int, 1234) QVariant(qlonglong, 5678)
Ich verstehe nicht, was ich falsch mache. Zumindest original und neu2 sollten doch identisch sein und gleich dargestellt werden? Das TableModel ist mit einer SQLite-Datenbank verknüpft, die darzustellenden Daten sind vom Typ INTEGER.
Hat jemand eine Idee, woran dies seltsame Verhalten liegen könnte? Freue mich über Tipps,
Grüße,
gk_17