Seite 1 von 1

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

Verfasst: 10. Juli 2008 13:02
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...

Verfasst: 10. Juli 2008 13:53
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)).

Verfasst: 10. Juli 2008 15:04
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

Verfasst: 11. Juli 2008 07:59
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. ???

Verfasst: 11. Juli 2008 09:05
von dontinelli
sorry, habe vor lauter bäumen den wald nicht gesehen. ja, wäre eindeutig gewesen. :oops:

Verfasst: 11. Juli 2008 09:30
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ß......