[gelöst] rowCount() liefert immer 256
Verfasst: 28. März 2011 19:17
Moin liebes Forum,
ich habe vermutlich ein Problem mit der Implementierung einer rowCount()-Methode.
Mein Programm zeigt Daten einer SQLite-Tabelle in einer TableView an und beschränkt die Datenmenge manchmal auf 256 Zeilen.
Vereinfacht mache ich folgendes:
1. erzeuge Objekt vom Typ WeightsTableModel, abgeleitet von QSqlQueryModel, verknüpfe mit Daten
2. erzeuge Objekt WeightsSortFilterProxyModel, abgeleitet von QSortFilterProxyModel (ohne selbst hinzugefügten Code), per setSourceModel() wird das WeightsTableModel verknüpft
4. meiner WeightsTableView(), abgeleitet von QTableView, wird per setModel() das WeightsSortFilterProxyModel übergeben
soweit funktioniert alles, alle 800 Zeilen einer Tabelle werden dargestellt.
Jetzt kommt der Punkt 3:
3. erzeuge Objekt WeightsGroupingProxyModel, abgeleitet von QAbstractTableModel, setze wie oben das WeightsSortFilterProxyModel als sourceModel und übergebe an WeightsTableView, jetzt stellt die TableView nur noch 256 Zeilen dar.
Meine rowCount-Methode in WeightsGroupingProxyModel sieht so aus:
Ich bin etwas ratlos, wie die rowCount()-Methode mit der TableView zusammen spielt und ob ich irgendwo was vergessen habe. Zum Testen habe ich bei der Erstellung der einzelnen Model-Objekte nach Schritt 1, 2 und 3 jeweils per qDebug() das Ergebnis von rowCount() ausgeben lassen, und es wird immer 256 zurückgeliefert, auch schon bei den ersten beiden TableModels, die ja eigentlich richtig funktionieren.
Hat jemand einen kleinen Gedankenanstoß für mich?
Grüße,
Gernot
ich habe vermutlich ein Problem mit der Implementierung einer rowCount()-Methode.
Mein Programm zeigt Daten einer SQLite-Tabelle in einer TableView an und beschränkt die Datenmenge manchmal auf 256 Zeilen.
Vereinfacht mache ich folgendes:
1. erzeuge Objekt vom Typ WeightsTableModel, abgeleitet von QSqlQueryModel, verknüpfe mit Daten
2. erzeuge Objekt WeightsSortFilterProxyModel, abgeleitet von QSortFilterProxyModel (ohne selbst hinzugefügten Code), per setSourceModel() wird das WeightsTableModel verknüpft
4. meiner WeightsTableView(), abgeleitet von QTableView, wird per setModel() das WeightsSortFilterProxyModel übergeben
soweit funktioniert alles, alle 800 Zeilen einer Tabelle werden dargestellt.
Jetzt kommt der Punkt 3:
3. erzeuge Objekt WeightsGroupingProxyModel, abgeleitet von QAbstractTableModel, setze wie oben das WeightsSortFilterProxyModel als sourceModel und übergebe an WeightsTableView, jetzt stellt die TableView nur noch 256 Zeilen dar.
Meine rowCount-Methode in WeightsGroupingProxyModel sieht so aus:
Code: Alles auswählen
int WeightsGroupingProxyModel::rowCount(const QModelIndex & parent) const
{
return sourceModel->rowCount();
}
Hat jemand einen kleinen Gedankenanstoß für mich?
Grüße,
Gernot