[gelöst] [qt 3.3] Sprünge in QListBox

Alles rund um die Programmierung mit Qt
Antworten
stonecold
Beiträge: 147
Registriert: 19. Oktober 2005 10:48

[gelöst] [qt 3.3] Sprünge in QListBox

Beitrag von stonecold »

Hallo,

ich habe folgendes Problem.
Ich habe eine QListBox mit 64 Einträgen von den jeweil nur 5 sichtbar sind.
Die Listbox wird sekündlich aktualisiert, sprich alle einträge werden gelöscht und dann neu hinzugefügt. Vor dem löschen merke ich mir das aktuell gehighlightete Item mit currentItem() und wenn die List neu aufgebaut ist setzte ich dieses wieder mit setCurrentItem(). das klappt soweit.

Nun muss ich zur Auswahl eines neuen Elementes ggf auch mal nach unten scrollen, da ja nur 5 Items sichtbar sind. Bei jedem Update aber springt nun die Liste wieder zurück auf das gehighlightete Item. Nun habe ich versucht mir vor der Aktualisierung auch noch das TopItem mit topItem() zu merken und es nach der Aktualisierung und dem Highlighten wieder zu setzten. Das funktionieret allerdings auch nicht.

Dann ist mir weiterhin aufgefallen, das bein Starten kein Item gehighlightet ist, wie zu erwarten war. Fange ich aber an in der Liste zu scrollen setzt die Box current Item automatisch auf 0. Evtl. liegt das Problem auch hier.

Weiß einer Rat?

Habe auch schon versucht zu schauen, ob das zu highlightende Item in sichbaren bereich liegt, also zwischen topItem und topItem +4 und es nur dann wieder neu zu setzten. Funktioniert aber auch nicht...
Zuletzt geändert von stonecold am 11. Juli 2008 09:30, insgesamt 1-mal geändert.
dontinelli
Beiträge: 146
Registriert: 22. September 2006 20:53

Beitrag von dontinelli »

Frage zum Verständtnis: Arbeitest du mit Qt 3? Denn in Qt 4 gibt es nur ListView und ListWidget...

Ich würde mir den Wert der Scrollbar speichern (über verticalScrollBar()->value()) und dann wieder setzen (setValue(int)).
stonecold
Beiträge: 147
Registriert: 19. Oktober 2005 10:48

Beitrag von stonecold »

Hallo,

und danke für die schnelle Antwort. Ich werde deinen Tip gleich mal ausprobieren.
Bezüglich deiner Frage: Ja ich arbeite mit Qt 3 genauer gesagt Qt3.3. Ich dache, die Überschrift wäre eindeutig :D

Gruß,
Mario
stonecold
Beiträge: 147
Registriert: 19. Oktober 2005 10:48

Beitrag von stonecold »

Hallo,

vielleicht hat ja noch wer eine gute Idee. Also ich habe es jetzt einigermaßen zum Laufen allerdings nur mit einen kleinem Workaround. Das Problem ist, dass wenn ich mit dem Scrollrad der Maus in der ListBox scrolle setzt sie current Item auf 0 ohne, dass ich irgendwas anklicke. ???
dontinelli
Beiträge: 146
Registriert: 22. September 2006 20:53

Beitrag von dontinelli »

sorry, habe vor lauter bäumen den wald nicht gesehen. ja, wäre eindeutig gewesen. :oops:
stonecold
Beiträge: 147
Registriert: 19. Oktober 2005 10:48

Beitrag von stonecold »

Kein Problem :lol:

Habe das Problem im Griff. Sobald die ListBox den Focus hat und currentItem() == -1 ist, wird currentItem auf 0 gesetzt. Keine Ahnung warum und ob es sinnig ist, aber wenn man es weiß......
Antworten