ich habe ein Problem mit einer von mir abgeleiteteten QSortFilterProxyModel-Klasse, welche ich zum Filtern von Datensätzen verwenden möchte. Folgende Funktionen habe ich implementiert:
Code: Alles auswählen
bool ExtFilterProxyModel::filterAcceptsRow(int sourceRow,
const QModelIndex &sourceParent)
{
if(doFiltering)
{
QModelIndex theIndex = sourceModel()->index(sourceRow, 0, sourceParent);
QDateTime dt = sourceModel()->data(theIndex).toDateTime();
return dateInRange(dt);
}
else
return true;
}Code: Alles auswählen
bool ExtFilterProxyModel::dateInRange(QDateTime &date)
{
return ((!minDate.isValid() || (date > minDate))
&& (!maxDate.isValid() || (date < maxDate)));
}Wenn ich nun aber doFiltering auf true setze, sind plötzlich alle Datensätz meiner Datenbank aus dem QTableView verschwunden, obwohl eigentlich nur jene weg sein sollten, die ich mit minDate und maxDate ausgegrenzt habe.
Könnt Ihr irgendeinen Fehler entdecken?
Das Datum befindet sich in der ersten Spalte des Models, deshalb wählte ich den Index 0. Muss ich vielleicht noch mit mapFromSource o.ä. arbeiten, um den QModelIndex zu "korrigieren"? (Obwohl mir das unlogisch erscheinen würde, da ich ja schon auf das sourceModel() zugreife..)
Ich hoffe jemand von euch kann mir weiter helfen. Danke!