Hallo,
ich habe ein qsql-Modell mit einem Proxymodell dran, wo ich mit einer Line-Edit-meine Filterwerte setzen kann:
das Prinzip ist ja laut Doku:
QSortFilterProxyModel can be used to hide items that don't match a certain filter
funktioniert alles prima, jetzt brauch ich es aber auch noch andersherum also: hide items that match a filter!
"Wenn Zeile in Spalte den String "xx" enthält, dann Zeile nicht im View anzeigen! Geht das irgendwie mit filterAcceptsRow?
Danke Daniel
[gelöst] QSortFilterProxyModel items ausblenden
[gelöst] QSortFilterProxyModel items ausblenden
Zuletzt geändert von dust2 am 1. Oktober 2007 12:08, insgesamt 1-mal geändert.
so gehts:
Danke Flare, hattest recht, ist eigentlich ganz einfach:
filterAcceptsRow ruft das Proxymodell intern auf, braucht man sich nicht zu kümmern, ich war da etwas unsicher, weil ich im Netz ein Beispiel gesehen habe, wo jemand das in einer Schleife für jede Zeile durchgelaufen ist!
Danke Daniel
Code: Alles auswählen
void MySortFilterProxyModel::set_HideString(QString sHide)
{
m_HideString=sHide;
}
bool MySortFilterProxyModel::filterAcceptsRow(int sourceRow,const QModelIndex &sourceParent) const
{
QModelIndex index0 = sourceModel()->index(sourceRow, 0, sourceParent);
return (sourceModel()->data(index0).toString().contains(filterRegExp())
&& (!sourceModel()->data(index0).toString().contains(m_HideString)) || (m_HideString.isEmpty()) );
}Danke Daniel