ich versuche seit geraumer Zeit in einem "QSortFilterProxyModel" zeilen mit bestimmten Begriffen herauszufiltern. Das wollte ich elegant mit "QRegExp" machen.
Zum Beispiel kann ich mit "(zeile|zahl)" alle Einträge finden die "Zeile" oder "Zahl" enthalten.
Wie kann ich nun aber alle Einträge anzeigen OHNE alles was "Zeile" oder "Zahl" enthällt? Ich habe bei der Internet Recherche einige Möglichkeiten gefunden, die aber alle im QT nicht funktionieren oder falsch sind. Drum schreib ich die hier erstmal auch nicht
Vielleicht weiß ja jemand wie ich das anstellen kann. Wenns mit QRegExp nicht geht, wär ich auch für einen anderen Lösungsweg dankbar.
^ The caret negates the character set if it occurs as the first character (i.e. immediately after the opening square bracket). [abc] matches 'a' or 'b' or 'c', but [^abc] matches anything but 'a' or 'b' or 'c'.
hmm okay. Vielleicht hätt ich doch schreiben sollen was ich versucht habe.
Die Doku hab ich auch gelesen, auch wenn ich nicht alles zu QRegExp verstanden habe.
"^" habe ich auch versucht, ging aber nicht. Zum einen müsste dann ja "[^a-zA-Z]" alles was Buchstaben hat weglassen (geht nicht) und zum anderen weiß ich nicht wie es dann mit Wörter-Listen gehen sollte "(^zeile|^zahl)" ?
Eine andere Möglichkeit von der ich gelesen habe ist "?!".
Also in etwa "(?!zeile|?!zahl)". Tut aber auchnicht.
Hatte denn noch niemand das selbe Szenario?
Ich bin gerade dabei, ein weiteres mal meine ganze Tabellenkonstruktion zu überprüfen. Nicht dass ich da noch einen anderen Fehler habe.
Hoi upsala,
erstmal danke für die Antwort. Hätte da 2 Fragen.
Was meinst du mit Überladen? Was soll ich da zu welchem Zweck überladen? Da steh ich leider auf dem Schlauch.
Und was das überschreiben von "filterAcceptsRow" angeht, da müsste ich ja dann erstmal QSortFilterProxyModel ableiten und eine neue Klasse basteln, da ich die Klasse an anderer Stelle auchnoch verwende. Diese würden nach überschreiben von "filterAcceptsRow" nicht mehr richtig funktionieren. Das sehe ich doch richtig oder?
Das kann ich natürlich machen (ist zumindest mal ein Weg *G*) aber macht man da so? Also nur weil ich diese eine Funktion überschreiben will eine neue Klasse erstellen/ableiten?
Es wäre doch sauberer, wenn ich rausbekommen würde wie ich die regulären Ausdrücke entsprechend nutzen kann oder?
Bin mir selber leider oft nicht sicher was die sauberste und "schulbuchmäßigste" Lösung wäre.