Ich habe eine funktionierende Filterfunktion (filterAcceptsRow
), die eine hierarchische QTreeView
basierend auf der ersten Spalte (index0) filtert. Ich muss eine Suche QLineEdit
verbinden, um den Benutzer durch den (gefilterten) QTreeView
suchen zu lassen. Ich bin nicht sicher, wie man dieser Funktion einen Suchalgorithmus hinzufügt. Kann mir jemand helfen, herauszufinden? Der Suchalgorithmus sollte in allen 5 Spalten nach einem QString
suchen (index0-index4).Wie durchsucht man ein (gefiltertes) QSortFilterProxyModel in Qt (C++)?
Meine Filterfunktion:
bool ProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const
{
QModelIndex index0 = sourceModel()->index(sourceRow, 0, sourceParent);
QModelIndex index1 = sourceModel()->index(sourceRow, 1, sourceParent);
QModelIndex index2 = sourceModel()->index(sourceRow, 2, sourceParent);
QModelIndex index3 = sourceModel()->index(sourceRow, 3, sourceParent);
QModelIndex index4 = sourceModel()->index(sourceRow, 4, sourceParent);
if (m_filterEnabled)
{
foreach (const QString &row, rows)
{
if (sourceModel()->data(index0).toString().contains(row) && m_shownRow)
return true; //element should be shown
else if (sourceModel()->data(index0).toString().contains(row) && !m_shownRow)
return false; //element should NOT be shown
}
if (m_shownRow)
return false;
else
return true;
} else {
return true; //no filter -> show everything
}
}
Danke, Das hat mein Problem gelöst! :) – Engo