-
Registrierter Benutzer
QTable wie richtig durchsuchen?
Ich plane im Moment mit mit einem QLineEdit je nach Tasteneingabe(string länge) in einer Tabelle(QTable) zu suchen. Den Listener auf das LineEdit habe ich nun stehen jedoch stellt sich mir jetzt die Frage wie ich es am Ressourcen schohnensten anstelle die Tabelle auf Übereinstimmungen zu durchsuchen. Die LineEdit eingaben werden mit einem QString gesammelt.
Im Moment sehe ich die Möglichkeit das ich bei jedem Tasten Druck eine Schleife auf die entsprechende Spalte des QTable setzte. das würde aber Bedeuteten das ich nach jedem Tastendruck in etwa 600 Zeilen durchlaufen muss das kommt mir jetzt etwas viel vor so das ich auch schon gedacht habe. Das ich beim erstellen der Tabelle die aus einem XML generiert eine QstringList ableite in dem ich nur die ersten 3 Buchstaben der einzelnen Spalten einfüge und dieses dann ducrhsuche. Mich würde aber auch Interessieren ob es hier auch noch andere Möglichkeiten unter KDE/QT3 gibt dies auf eine wesentlich saubere Methode zu lösen.
gruss undefined
-
Das kommt darauf an, was du suchst:
1. Zelle ist gleich xyz oder
2. Zelle beginnt mit xyz oder
3. Zelle enthält xyz
zu 1: Einfach ne Hashtabelle nehmen. Das wäre dann QDict. Wenn gut gewählt findest Du einen Eintrag mit nur einem Vergleich.
zu 2: Zellen vorher sortieren (ggfs. in separater Datenstruktur) und dann mit binärer Suche. Bei 512 Zellen wären damit höchstens 9 Vergleiche nötig.
zu 3: Da habe ich auch keine bessere Idee als alles linear zu durchsuchen.
-
Registrierter Benutzer
Danke, ich werde mir mal die QDict ansehen. Im Moment habe ich mich für die Schleifen Version entschieden. Ich Lese oder Suche immer nur nach cols=Schleifenanzahl row=0. Ist aber jetzt schon abzusehen das es bei Leuten mit leistungschwachen Rechnern Zeit in Anspruch nehmen wird. Ich werde beide Versionen heute Abend mal auf meinen 350 MHz Rechner testen.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen