Tabelle nach mehreren Kriterien/Spalten filtern->Problem

Alles rund um die Programmierung mit Qt
Antworten
DarkSchwabe
Beiträge: 23
Registriert: 7. Juli 2008 11:57

Tabelle nach mehreren Kriterien/Spalten filtern->Problem

Beitrag von DarkSchwabe »

hallo,

ich habe ein Problem mit meiner Struktur bei welchem ich gerade nicht weiterkomme.

Es werden Daten in ein "QStandardItemModel" geladen.
Weiter sieht das dann so aus:

QStandardItemModel --> QSortFilterProxyModel --> QTableView

Die Tabelle:
TYPE | Concept_Name | Content

Hiermit kann ich nun ganz fein nach Schlüsselwörtern filtern/suchen.
Nun würde ich aber auch gerne gleichzeitig alle Zeilen ausblenden welche vom Typ "XY" sind. Aber wie mach ich das am besten?

Lösungsgedanken:
----------------------

1. einen weiteren QSortFilterProxyModel zwischenschalten?
Ist nicht soo schön und ich frag mich ob das dann nicht zu langsam wird.

2. ich benutze bei der Suche reguläre Ausdrücke
Kann ich das damit lösen? Ich komme auf keinen regulären Ausdruck der dann "Felder übergreifend" die Zeile validiert.

3. Ich lösche die nicht zutreffenden Zeilen im QSortFilterProxyModel. Aber wie kann ich das dann wieder in den Ursprungszustand zurückversetzen wenn ich wieder alle Typen sehen will?

4. Kann ich mit QSortFilterProxyModel mehrere Filter gleichzeitig anwenden? Also zum Beispiel "Content = 'Baum'" und "Type='Natur'" oder so? Das wäre ja am besten.

Ich hoff man versteht was mein Problem ist.
Einen Titel dafür zu finden ist gar nicht einfach.
Gruß
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

QSortfilterProxyModel überladen, es gibt da ein paar nette protected Methoden die sich ideall dafür eignen.
DarkSchwabe
Beiträge: 23
Registriert: 7. Juli 2008 11:57

Beitrag von DarkSchwabe »

hmm.. werde mir das mal bei Zeiten genauer anschauen.
Habe mich gestern abend noch mit meiner Möglichkeit 1 beschäftigt und einen weiteren Filter dazwischen gebaut. Funktioniert (gefühlt) genauso schnell. Ist also irstmal eine Lösung die ich recht schnell implementieren konnte ohne große Klimmzüge zu machen ;-)
Wenn ich Zeit habe versuch ich das mit dem Überladen.

Danke
Gruß
Antworten